根据从联接评估的条件对mysql表中的字段进行计数

数据贩卖者

我有一张q_data像这样的桌子

cuid  timestamp_from        timestamp_to
A1    2014-12-01 22:04:00   2014-12-01 22:04:21
A1    2014-12-04 22:05:00   2014-12-04 22:05:25
A2    2014-12-06 20:04:00   2014-12-06 20:04:21
A2    2014-12-07 19:04:00   2014-12-07 19:04:21

patients_像这样的表

cuid    last_visit
A1      2014-12-03
A2      2014-12-05

我希望计算q_data中每个cuid的行数,以使timestamp_to早于Patient_中的last_visit日期。因此,对于上面显示的数据,我希望我的查询给出以下结果。

cuid   day_count
A1     1
A2     1

我正在尝试使用以下查询执行此操作:

create table tmp
    select
        q.cuid as cuid,
        count(distinct(q.query_to)) as day_count
    from q_data q
    inner join patients_ p on q.cuid = p.cuid
    group by q.cuid
    having datediff(p.last_visit, date(q.query_to)) >= 0
;

但我得到一个错误:

ERROR 1054 (42S22): Unknown column 'p.last_visit' in 'having clause'

如果有人可以帮助我理解查询中的错误,我将不胜感激。谢谢。

阿比克·查克拉博蒂(Abhik Chakraborty)

您选择的查询

select 
q.cuid as cuid, 
count(distinct(q.query_to)) as day_count 
from q_data q 
inner join patients_ p on q.cuid = p.cuid 
group by q.cuid 
having datediff(p.last_visit, date(q.query_to)) >= 0;

如果在您的haveing子句中有密切注意,您使用了2列,这些列不是select的一部分,因此这是无效的,并且随着您现​​在的获取而出现错误。

有一两件事你可以做的是移动,在where clause作为

select q.cuid as cuid, count(distinct(q.query_to)) as day_count 
from q_data q 
inner join patients_ p on q.cuid = p.cuid 
where datediff(p.last_visit, date(q.query_to)) >= 0
group by q.cuid 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章