我有一个表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'
如果有人可以帮助我理解查询中的错误,我将不胜感激。谢谢。
最佳答案
您选择的查询
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子句中有密切注意,您使用了不属于select的2列,这是无效的,并且在您现在获取时会出现错误。
您可以做的一件事是将
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