【发布时间】:2017-01-14 12:10:45
【问题描述】:
我需要在以下数据库中选择 * where distinct 'Rua' 和不同的 'CP':
id Rua Local Conc CP
81143 dos moinhos Rio Tinto Gondomar 0123
81142 dos Moinhos Rio Tinto Gondomar 4435
81141 dos Moinhos Rio Tinto Gondomar 4435
通过以下查询,我可以获得两列:
SELECT Rua, CP
FROM Codigo
GROUP BY Rua, CP
HAVING COUNT(*) = 1
但我想要所有的列。 SELECT * 返回 “列 'Codigo.id' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。”
所以我想到了这个答案:How do I (or can I) SELECT DISTINCT on multiple columns?
我没有选择接受的答案,因为我需要一个快速查询(这将用于 AJAX 搜索建议)。我使用了另一个高度赞成的答案。所以,我创建了以下查询:
SELECT * From Codigo
WHERE (Rua,CP) IN (
SELECT Rua, CP
FROM Codigo
GROUP BY Rua, CP
HAVING COUNT(*) = 1
);
返回在预期条件的上下文中指定的非布尔类型的表达式,靠近','错误。为什么它期望Rua 在WHERE 之后是布尔值?在答案中,他们使用了saleprice,这似乎不是布尔值。
所以我的问题是如何选择所有列包括具有相同Rua 和CP 的行,但只有一次(DISTINCT)?
【问题讨论】:
标签: sql-server group-by unique distinct