SELECT ID,Name FROM Master
id Name
1 John
2 John
3 Jack
4 Max
5 Jack
6 Max
7 Max
使用上面的查询,我在下拉列表中重复了所有名称。我必须在下拉列表中绑定数据 foreach 名称有各自的 ID 我该怎么做。
SELECT ID,Name FROM Master
id Name
1 John
2 John
3 Jack
4 Max
5 Jack
6 Max
7 Max
使用上面的查询,我在下拉列表中重复了所有名称。我必须在下拉列表中绑定数据 foreach 名称有各自的 ID 我该怎么做。
我不知道数据背后的逻辑,但是只有在您必须过滤掉重复名称并从重复名称中选择其中一个 id 时才能获得一个名称。
SELECT MIN(id), Name
FROM Master
GROUP BY Name
假设 id 列是数字,上面的查询将输出每个名称的 id 最低的出现。
您的 distinct 查询不起作用的原因是结果集中所有列的不同过滤器,因此在这种情况下,name 和 id 都用于唯一性。
如果您出于某种原因需要每个名称的所有 id,则必须在 ASP.NET 端进行过滤,或者在知道选择了哪个人后在数据库中查找 id。
仅放置 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
试试这个查询,它将返回分组为一个
SELECT GROUP_CONCAT(ID), Name FROM your_tbl Group BY Name