选择活跃= 1的日期,如果活动= 0,则不执行任何操作

时间:2012-05-27 07:08:40

标签: mysql group-by

我有桌子,有天,版本和活动。

在表格中,我有与active = 1和active = 0相同的日子 这些天我需要从数据库中获取,其中active = 1且version_id为max。 为此,我写了以下查询:

SELECT 'MAX(version_id)',DAY, active FROM `day` group by day, active

但是第28天和第29天是重复的,所以当我使用“AND active = 0”时,它会显示第28天,其中active = 1(并且MAX(VERSION_ID)更低,但不应该看到那天。

查询结果:http://screenshooter.net/0562655/27_05_2012__09_02_56

所以: “显示我在VERSION_ID为MAX且DAY为活动的所有日期,如果有效= 0,则不显示早期版本”

2 个答案:

答案 0 :(得分:0)

这是使用嵌套查询执行此操作的方法:

SELECT * FROM `day`
WHERE `active` = 1 AND version_id = (
    SELECT MAX(version_id) FROM `day`
)

答案 1 :(得分:0)

试试这个 -

SELECT * 
FROM day
WHERE version_id IN (SELECT MAX(d.version_id) 
                    FROM day d
                    WHERE active = 1
                    GROUP BY d.day)
OR active = 0