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