この質問は、IN句による最終結果の順序付けに関してよく寄せられる質問とは異なります。
IN句を含むクエリによって返される結果を、IN句の順序と一致させるように強制したいと思います。
これは私が取り組んでいる元の質問です。
以下のクエリを変更して、テーブルを。で並べ替えるときに、を含む行がそれぞれのprogress=2
前progress=4
とprogress=7
ごとに発生するようにします。session_id
formation_page_hits
datetime
現在のクエリは次のとおりです。
SELECT COUNT(*)
FROM (
SELECT session_id
FROM formation_page_hits
WHERE progress IN (2, 4, 7)
AND datetime >= '2011-03-23'
AND datetime < '2011-03-24'
GROUP BY
session_id
HAVING COUNT(DISTINCT progress) = 3
) q
これらのエントリ
datetime, session_id, progress
('2011-03-01 01:02:11', 'abc', 2)
('2011-03-01 01:02:12', 'abc', 4)
('2011-03-01 01:02:13', 'abc', 7)
クエリに一致する必要がありますが、次のようになります。
datetime, session_id, progress
('2011-03-01 01:02:11', 'abc', 4)
('2011-03-01 01:02:12', 'abc', 2)
('2011-03-01 01:02:13', 'abc', 7)
一致するべきではありません。
さらに:
datetime, session_id, progress
('2011-03-01 01:02:11', 'abc', 4)
('2011-03-01 01:02:12', 'abc', 2)
('2011-03-01 01:02:13', 'abc', 4)
('2011-03-01 01:02:14', 'abc', 7)
一致する必要があります。