我有以下 SignupInfo 表:
ID UserID FName LName
--------------------------------------
ABC001 ABC Albert Einstein
DEF001 DEF Isaac Newton
ABC049 ABC Albert Einstein
DEF568 DEF Isaac Newton
GHI230 GHI Thomas Edison
我需要UserID
,FName
和LName
只有UserID
DISTINCT 。
SELECT DISTINCT UserID FROM SignupInfo
仅向我提供UserID
列,但我也需要FName
和LName
。
提前致谢!
修改
结果应为:
UserID FName LName
----------------------------
ABC Albert Einstein
DEF Isaac Newton
GHI Thomas Edison
答案 0 :(得分:2)
GROUP BY可以做你想做的事。
SELECT UserID, FName, LName FROM SignupInfo GROUP BY UserID, FName, LName;
我刚刚在自己的数据库中重新创建了这个,这是我查询的结果:
UserID FName LName
ABC Albert Einstein
DEF Isaac Newton
GHI Thomas Edison
我认为这正是OP所要求的 如果他想要别的东西,或许他需要澄清一下。
答案 1 :(得分:1)
尝试
select * from SignupInfo
where UserId in (select UserID from SignupInfo group by UserId having count(*) = 1)
编辑 - 示例:
declare @fred table (id varchar(max),UserID varchar(max),FName varchar(max),LName varchar(max))
insert into @fred values
('ABC001', 'ABC', 'Albert' , 'Einstein'),
('DEF001', 'DEF', 'Isaac' , 'Newton'),
('ABC049', 'ABC', 'Albert' , 'Einstein'),
('DEF568', 'DEF', 'Isaac' , 'Newton'),
('GHI230', 'GHI', 'Thomas', 'Edison')
select * from @fred
where UserId in (select UserID from @fred group by UserId having count(*) = 1)
答案 2 :(得分:0)
假设我们要根据ID
列从最早排序的行中选择值。
然后你想要的查询是:
;WITH Ordered AS (
SELECT *,ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY ID) rn
FROM SignupInfo
)
select UserID,FName,LName from Ordered where rn = 1
如果有其他排序顺序应该是首选,只需更改ORDER BY
子句中的OVER(...)
。
答案 3 :(得分:0)
这将完成工作:
SELECT DISTINCT(UserID), FName, LName
FROM SignupInfo
答案 4 :(得分:0)
我刚刚意识到我可以做到:
SELECT DISTINCT UserID, FName, LName FROM SignupInfo
因为即使2个用户具有相同的 FName 和 LName ,他们的 UserID 仍然会有所不同。
在我看来,数据库中唯一的问题是维护得很差。我这样说是因为我认为应该有一个单独的表,其中包含用户的UserID,FNames和LNames,因此可以消除操作员在此表中拼写错误名称的可能性。
总结一个例子,如果操作员输入这个新行(注意 Albert 是拼写错误的):
ID UserID FName LName
--------------------------------------
ABC061 ABC Albret Einstein
然后我的 SELECT 语句将返回2行,其中 UserID 相同。
无论如何,感谢你们的建议!
答案 5 :(得分:0)
检查一下
select Distinct userid,[Column2],[column003] from [table name]
答案 6 :(得分:-1)
查询应如下所示
SELECT UserID, FName, LName FROM SignupInfo GROUP BY UserID