这个问题不同于关于按 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)
应该是匹配的。