使用不同的关键词,SQL

svk*_*nky 1 sql distinct

当我写查询时:

SELECT DISTINCT City FROM Customers;
Run Code Online (Sandbox Code Playgroud)

它返回Customers表中的所有不同城市.

但是当我写下查询时:

SELECT DISTINCT City,* FROM Customers;
Run Code Online (Sandbox Code Playgroud)

它返回Customers表中的所有行(首先是城市列,后面是所有列,包括city).

即使我们使用不同的关键字,显示所有记录的原因是什么?

Dav*_*eim 5

DISTINCT关键字不适用于单个列,它适用于整个记录.如果表的行与所有列的值不相同,则它们不是不同的.

假设您的customers表中有一些唯一的列ID.如果您只想要每个城市的最新客户ID,您可以尝试:

SELECT Customers.* FROM
Customers JOIN (
  SELECT city, MAX(ID) as id
  FROM Customers
  GROUP BY city
  ) as max_id 
on Customers.ID=max_id.id
Run Code Online (Sandbox Code Playgroud)