SELECT ID,Name FROM Master
id Name
1 John
2 John
3 Jack
4 Max
5 Jack
6 Max
7 Max
上記のクエリを使用すると、ドロップダウンですべての名前が繰り返されます。ドロップダウンでデータをバインドする必要があります。名前にはそれぞれIDがあります。どうすればよいですか。
SELECT ID,Name FROM Master
id Name
1 John
2 John
3 Jack
4 Max
5 Jack
6 Max
7 Max
上記のクエリを使用すると、ドロップダウンですべての名前が繰り返されます。ドロップダウンでデータをバインドする必要があります。名前にはそれぞれIDがあります。どうすればよいですか。
データの背後にあるロジックはわかりませんが、1つの名前を取得するには、重複する名前を除外し、重複する名前からIDの1つを確定する必要があります。
SELECT MIN(id), Name
FROM Master
GROUP BY Name
上記のクエリは、id列が数値である場合、各名前のIDが最小のオカレンスを出力します。
個別のクエリが機能しない理由は、結果セットのすべての列に個別のフィルターがあるためです。この場合、名前とIDの両方が一意性のために使用されます。
何らかの理由で各名前のすべてのIDが必要な場合は、ASP.NET側でフィルター処理するか、選択されたユーザーがわかったらデータベースでIDを検索する必要があります。
Try this query it will return grouped as one
SELECT GROUP_CONCAT(ID), Name FROM your_tbl Group BY Name
[名前]列のみを配置すると、一意の出力が得られます。問題は、distinctキーワードが行ごとに異なる主キーをチェックするため、Name列を配置するだけでよいすべての列が返されることだと思います。(明確なことについての私の理解)
SELECT distinct Name FROM Master
output
Jack
John
Max
-- Below is what i tested
-- Created a table
Create table mytable(
ID bigint identity primary key,
UserName varchar(50)
)
-- Insert the records
INSERT INTO dbo.mytable(UserName) VALUES('John')
INSERT INTO dbo.mytable(UserName) VALUES('John')
INSERT INTO dbo.mytable(UserName) VALUES('Jack')
INSERT INTO dbo.mytable(UserName) VALUES('Max')
INSERT INTO dbo.mytable(UserName) VALUES('Jack')
INSERT INTO dbo.mytable(UserName) VALUES('John')
-- If i use below query
select distinct * from mytable
ID UserName
1 John
2 John
3 Jack
4 Max
5 Jack
6 John
-- and if i use this
select distinct UserName from mytable
output
Jack
John
Max
-- I think you should not allow the user to enter multiple users with the same name
-- what do you think about this
select UserName +' '+CAST(ID as varchar) as [Users] from mytable
John 1
John 2
Jack 3
Max 4
Jack 5
John 6
-- IN your code you can create a list<string,int> and stored in it. you can easily manage it in code