SQL选择语法

时间:2014-01-15 23:25:47

标签: sql oracle

我在构建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
    +----------+----------+

在我看来,这是一堆“群体”问题的“最大”。

2 个答案:

答案 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