以下是学习者w3school数据库的链接:
如果我们执行以下查询:
SELECT DISTINCT city FROM Customers
它会从表中返回一个不同城市属性的列表。
如果我们希望获得与SELECT * FROM Customers
查询相同的所有行,并在每行中使用City属性的唯一值,该怎么办。
答案 0 :(得分:0)
DISTINCT 与多列一起使用时,会同时应用于所有列。因此,考虑所有列的值集合,而不仅仅是一列。
如果你想拥有不同的值,那么连接所有列,这将使它变得不同。
或者,您可以使用 GROUP BY 对行进行分组。
答案 1 :(得分:0)
我想你想要这样的事情:
(将PK
字段更改为Customers
表主键或索引,如Id
)
在SQL Server中
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)
此查询 - 我希望 - 将明确返回您的城市,并显示其他列。
答案 2 :(得分:0)
您需要从customers
表中选择所有值,其中city
是唯一的。所以,从逻辑上讲,我带来了这样的查询:
SELECT * FROM `customers` WHERE `city` in (SELECT DISTINCT `city` FROM `customers`)
答案 3 :(得分:0)
您可以使用GROUP BY子句获取特定列中的不同值。请考虑下表 - “联系方式”:
+---------+------+---------+ | id | name | city | +---------+------+---------+ | 1 | ABC | Chennai | +---------+------+---------+ | 2 | PQR | Chennai | +---------+------+---------+ | 3 | XYZ | Mumbai | +---------+------+---------+
要选择City属性中具有不同值的所有列,请使用以下查询:
SELECT * 从联系 GROUP BY city;
这将为您提供如下输出:
+---------+------+---------+ | id | name | city | +---------+------+---------+ | 1 | ABC | Chennai | +---------+------+---------+ | 3 | XYZ | Mumbai | +---------+------+---------+