mysql查询,选择distinct / max

时间:2012-04-06 16:18:10

标签: mysql sql

我需要计算表LDS中所有不同的值status = 'ok' AND date >= '2012-01-01'并且如果有多个相同的ID,则只检查具有最新日期的ID:如果此id的状态为“ok”,则计算它。

表LDS:

ID | STATUS  | DATE
1  | ok      | 2012-01-01
2  | bad     | 2012-01-01
1  | bad     | 2012-02-02
3  | ok      | 2012-01-01
4  | ok      | 1999-01-01

结果应为“1”(ID 3)

1 个答案:

答案 0 :(得分:3)

我假设因为您想要计算不同的ID,所以在重复的情况下计算哪个ID无关紧要,因为这不会影响最终计数:

编辑:更新了查询,以排除后续ID状态的所有'bad'

SELECT COUNT(DISTINCT lds1.ID)
FROM 
    LDS lds1
    LEFT JOIN LDS lds2
        ON lds1.ID = lds2.ID
        AND lds1.Date < lds2.Date
        AND lds2.Status = 'bad'
WHERE 
    lds1.Date > '2012-01-01'
    AND lds1.Status = 'ok'
    AND lds2.ID IS NUL