gpt4 book ai didi

mysql - mysql 5.7 的查询结果无效

转载 作者:行者123 更新时间:2023-11-29 11:46:55 24 4
gpt4 key购买 nike

我正在努力寻找解决问题的方法。

我基本上有 3 个表 - 事件、用户、campaign_user(数据透视表 - 包含 Campaign_id、user_id)

我有这个查询:

select * from `campaigns` 
where `id` = 91
and (select count(*)
from `users`
inner join `campaign_user` on `users`.`id` = `campaign_user`.`user_id`
where `campaign_user`.`campaign_id` = `campaigns`.`id`
and `user_id` = 1) >= 1

返回 0 个结果。我已检查 campaign_user 表中是否存在相关行。

奇怪的是,如果我对另一个事件 ID (89) 运行相同的查询,它确实会返回预期的结果。有些事件 ID 按预期返回,有些则返回 0.. 奇怪且令人沮丧。

在运行 mysql 5.5 的生产服务器中不会​​发生这种情况

但它发生在我运行 mysql 5.7 的虚拟机中

我不知道这是什么原因。非常感谢您的帮助!

最佳答案

最可能的解释是两台服务器上的数据不同。但是,您可以简化查询,这就是我回答的原因。子查询中不需要users 表。所以:

select c.*
from `campaigns` c
where c `id` = 91 and
(select count(*)
from campaign_user cu
where cu.`campaign_id` = c.`id` and cu.user_id = 1
) >= 1;

反过来,可以通过使用 exists (或 left join)而不是 count(*) 来简化并提高效率>:

select c.*
from campaigns c
where c id = 91 and
exists (select 1
from campaign_user cu
where cu.campaign_id = c.id and cu.user_id = 1
) ;

关于mysql - mysql 5.7 的查询结果无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34767042/

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