我在构建SQL查询时需要帮助。
以下是我在简单的两栏表中的数据:
+----------+----------+
| column 1 | column 2 |
+----------+----------+
| a | 0 |
| b | 0 |
| b | 1 |
+----------+----------+
第2列始终只是“0”或“1”
我需要一个符合此规则的查询:
If there are multiple records with the same value in column 1,
then I want ONLY the row that has value "1" in column 2.
因此,在上面的例子中,我希望只从我的查询中返回第一行和第三行
+----------+----------+
| column 1 | column 2 |
+----------+----------+
| a | 0 | <<--- WANT this row
| b | 0 |
| b | 1 | <<--- WANT this row
+----------+----------+
在我看来,这是一堆“群体”问题的“最大”。
答案 0 :(得分:3)
OP表示:
If there are multiple records with the same value in column 1, then I want ONLY the row that has value "1" in column 2.
这意味着如果有多个记录且没有值的值为1,则不应返回第1列中的该值。作为一篇社论评论,这对我来说听起来并不合理,但这是OP所说的相当清楚。
使用having
子句从聚合查询中轻松生成:
SELECT t.column1, MAX(t.column2)
FROM Table t
GROUP BY t.Column1
HAVING count(*) = 1 or MAX(t.column2) > 0;
答案 1 :(得分:2)
您的最大假设是正确的。这样做的一种方法是
SELECT t.column1, MAX(t.column2)
FROM Table t
GROUP BY t.Column1