SQL:where子句中的distinct

时间:2013-02-06 12:44:54

标签: sql select

我有一个查询,执行后显示:

Name  | LasName | City
-------------------------
John  | Doe     | London
John  | Doe     | Berlin
Martin| Smith   | Paris

在WHERE子句部分我能做些什么才能得到一个John Doe,不管是哪个城市?

这个问题非常糟糕,这就是为什么我不在这里发帖。

如果您认为我可以做任何事情,请发布解释它的假查询,我只需要获得这个概念。

非常感谢!

5 个答案:

答案 0 :(得分:4)

您没有声明RDBMS。一种应该适用的方法。

SELECT Name,
       LasName,
       MAX(City) AS City
FROM   YourQuery
GROUP  BY Name,
          LasName 

你说你不在乎哪个城市。这会按字母顺序给你最后一个。

或另类

SELECT Name,
       LasName,
       City
FROM   (SELECT Name,
               LasName,
               City,
               ROW_NUMBER() OVER (PARTITION BY Name, LasName ORDER BY (SELECT 0)) AS RN
        FROM   YourQuery) T
WHERE  RN = 1 

答案 1 :(得分:2)

假设您正在使用MySQL并且想要在一行中查看所有相同用户名的城市,请尝试以下操作:

select Name, LasName, group_concat(City)
from LargeQuery
group by Name, LasName

答案 2 :(得分:1)

您可以使用以下查询(t-sql)

SELECT Distinct Name,LasName
FROM TableName

答案 3 :(得分:0)

假设您要求只查询一行,无论城市如何,请尝试使用

select * from tablename 
where name = 'John'
and lasname = 'Doe'
and rownum = 1;

答案 4 :(得分:0)

select * from `TableName` group by Name, LasName