0
此問題與commonly asked question有關,通過IN子句排序最終結果。mysql強制結果的順序與IN子句的順序匹配
我想強制查詢返回包含IN子句的結果,以匹配IN子句的順序。
This is the original question我工作。
我想改變下面的查詢,以使得包含progress=2
行由datetime
訂購formation_page_hits
表時progress=4
和progress=7
每個session_id
之前發生。
下面是當前查詢:
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)
應該是匹配的。
(2,4,7)嚴格按升序排列。您的示例數據是否特殊,或者您希望始終使用升序? – vbence 2011-03-29 11:39:14