SQL:where 子句中的不同

ADM*_*ADM 1 sql select

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

\n\n
Name  | LasName | City\n-------------------------\nJohn  | Doe     | London\nJohn  | Doe     | Berlin\nMartin| Smith   | Paris\n
Run Code Online (Sandbox Code Playgroud)\n\n

我可以在 WHERE 子句部分做些什么,以便无论在哪个城市,都只得到一个 John Doe?

\n\n

该查询非常庞大,\xe2\x80\x99s 为什么我\xe2\x80\x99m 没有将其发布在这里。

\n\n

如果有\xe2\x80\x99s任何你认为我能做的事情,请发布一个假查询来解释它,我只需要得到这个概念。

\n\n

多谢!

\n

Mar*_*ith 5

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

SELECT Name,
       LasName,
       MAX(City) AS City
FROM   YourQuery
GROUP  BY Name,
          LasName 
Run Code Online (Sandbox Code Playgroud)

你说你不在乎哪个城市。这为您提供了按字母顺序排列的最后一个。

或者替代方案

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 
Run Code Online (Sandbox Code Playgroud)