0

日、バージョン、アクティブのテーブルがあります。

表には、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」を使用すると、アクティブ= 1(およびMAX(VERSION_ID)が低い)の28日目が表示されますが、その日は表示されません。

クエリ結果:http ://screenshooter.net/0562655/27_05_2012__09_02_56

つまり、「VERSION_IDがMAXで、DAYがACTIVEであるすべての日を表示します。active= 0の場合、以前のバージョンを表示しないでください」

4

2 に答える 2

0

これは、ネストされたクエリでそれを行う方法です。

SELECT * FROM `day`
WHERE `active` = 1 AND version_id = (
    SELECT MAX(version_id) FROM `day`
)
于 2012-05-27T07:19:55.987 に答える
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
于 2012-05-27T07:37:39.023 に答える