如何通过"在此"组中添加where exists语句? mysql查询?

时间:2016-06-12 22:18:05

标签: mysql

我有一个查询,它返回表中组内值的范围。

现在我想检查每个组是否有值"结果"发生在#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

如何正确添加此条件?

2 个答案:

答案 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