下拉列表中重复的名称。(sql查询)

时间:2012-08-13 07:10:29

标签: c# asp.net sql-server

  SELECT ID,Name FROM Master

    id  Name
    1   John
    2   John
    3   Jack
    4   Max
    5   Jack
    6   Max
    7   Max

使用上面的查询我会在下拉列表中重复所有名称。     我必须在dropdown foreach中绑定数据     相应的ID我该怎么做。

3 个答案:

答案 0 :(得分:3)

我不知道数据背后的逻辑,但只有在必须过滤掉重复的名称并从重复的名称中解决其中一个ID时,才能获得一个名称。

SELECT MIN(id), Name 
FROM Master
GROUP BY Name

如果id列是数字,上面的查询将输出每个名称的最低id的出现次数。

您的独特查询不起作用的原因是结果集中所有列的不同过滤器,因此在这种情况下,name和id都用于唯一性。

如果由于某种原因,您需要在ASP.NET端过滤每个名称的所有ID,或者在知道选择了哪个人后在数据库中查找ID。

答案 1 :(得分:-1)

只有放置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

答案 2 :(得分:-1)

尝试此查询,它将返回分组为一个

SELECT GROUP_CONCAT(ID), Name FROM your_tbl Group BY Name