以下是针对学习者的w3school数据库的链接:
W3School Database
如果我们执行以下查询:
SELECT DISTINCT city FROM Customers
它返回表中不同城市属性的列表。
如果我们想要得到像从SELECT * FROM Customers
查询中得到的所有行,并且每行中的城市属性值都是唯一的,该怎么办呢?
发布于 2015-04-13 18:19:33
当与多个列一起使用时,DISTINCT将一起应用于所有列。因此,考虑所有列的值集,而不仅仅是一列。
如果您想要有不同的值,那么连接所有的列,这将使它不同。
或者,您可以使用GROUP BY对行进行分组。
发布于 2015-04-13 18:31:53
我认为你想要这样的东西:
(将PK
字段更改为您的Customers
表主键或索引,如Id
)
在SQL Server (和标准SQL)中
SELECT
*
FROM (
SELECT
*, ROW_NUMBER() OVER (PARTITION BY City ORDER BY PK) rn
FROM
Customers ) Dt
WHERE
(rn = 1)
在MySQL中
SELECT
*
FORM (
SELECT
a.City, a.PK, count(*) as rn
FROM
Customers a
JOIN
Customers b ON a.City = b.City AND a.PK >= b.PK
GROUP BY a.City, a.PK ) As DT
WHERE (rn = 1)
此查询-I希望-将返回您的城市,并显示其他列。
发布于 2016-01-06 23:07:16
您需要选择customers
表中的所有值,其中city
是唯一的。因此,从逻辑上讲,我提出了这样的问题:
SELECT * FROM `customers` WHERE `city` in (SELECT DISTINCT `city` FROM `customers`)
https://stackoverflow.com/questions/29602877
复制相似问题