我有一个查询,它返回表中组内值的范围。
现在我想检查每个组是否有值"结果"发生在#34;页"列中,并且只有当语句成立时,才返回该行。
表结构的一个例子:
*start = malloc(sizeof(link_t));
从此示例中,应返回以下内容:
ID pages start_time
1 splash 12
1 view 14
1 comments 16
1 results 18
2 splash 1
2 view 13
2 comments 14
2 comments 15
3 test 2
3 splash 3
3 results 35
3 view 26
因为ID = 2没有行"结果"在专栏页面。
我有以下查询,但没有其他条件可供使用。
ID time_range
1 6
3 33
如何正确添加此条件?
答案 0 :(得分:1)
SELECT MAX(start_time)-MIN(start_time)
FROM mytable
WHERE country="United States"
AND pages like '%results%'
GROUP BY my_id;
或者
SELECT MAX(start_time)-MIN(start_time)
FROM mytable
WHERE country="United States"
AND my_id IN (select distinct my_id from mytable where pages like '%results%')
GROUP BY my_id;
答案 1 :(得分:1)
这是我的版本:
SELECT
A.`id`,
MAX(B.`start_time`) - MIN(B.`start_time`)
FROM `whenpages` A
LEFT JOIN `whenpages` B ON
A.`id` = B.`id`
WHERE
A.`pages` = 'results'
GROUP BY
A.`id`
如果需要,将A.pages =
替换为A.pages LIKE
。