gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:45:19 25 4
gpt4 key购买 nike

我有一个像这样的表 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 早于 patients_ 中的 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;

如果在你的 having 子句中仔细注意你使用了 2 个不属于选择的列,这是无效的,并且会像你现在得到的那样得到错误。

你可以做的一件事是在 where 子句中移动它作为

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

关于mysql - 根据连接评估的条件对 mysql 表中的字段进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29817459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com