2013-02-06 54 views
1

我有一個查詢,執行後顯示:SQL:不同在where子句

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

有什麼我可以在WHERE子句部分做才能得到的只是一個李四,不管這個城市嗎?

該查詢是humongous這就是爲什麼我不在這裏發佈它。

如果有什麼你認爲我可以做的,請發表一個假的查詢解釋它,我只需要得到的概念。

非常感謝!

回答

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 
2

你使用MySQL,你想看到一個線,爲相同的用戶名所有的城市,你可以試試假設:

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

@ user523129 - 如果使用Oracle使用GROUP_CONCAT作爲Mark的示例或LISTAGG()。 – Art

0

假設你要求只查詢一行,不管城市,試試這個,

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

你可以使用下面的查詢(T-SQL)

SELECT Distinct Name,LasName 
FROM TableName 
0
select * from `TableName` group by Name, LasName