gpt4 book ai didi

mysql - 如何排除 tableA 的选择查询中的记录,其中 tableA.user_id 在 user.id 中不存在

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

我想选择记录(pm),但排除用户表中不再存在的已删除帐户的ID(发件人)(已删除)

这是“新消息”通知

$sql = "SELECT COUNT(pm.id) c
FROM `private_messages` pm
LEFT JOIN `users` u ON u.`id` = pm.`sender_id`
WHERE pm.`recipient_id` = '".$user_id."'
AND (SELECT COUNT(id) FROM `pm_views` WHERE `user_id` = '".$user_id."' AND `message_id` = pm.id) = 0
";

表格:

private_messages = id, recipient_id, sender_id, date_sent.
pm_views = id, message_id, view_date, user_id

上面的 SQL 返回“未查看”消息的计数。

我想从用户表中排除来自不存在 ID 的消息。

最佳答案

据我所知,这里有 3 个表:users、private_messages 和 pm_views。其中 pm_views 包含每个“ View ”的记录(用户打开私有(private)消息)。

希望我有这个权利:您正在查找的查询将计算发送给特定用户的尚未被该用户查看的每条消息,但不会包括来自用户表中不再存在的用户的未查看消息.

我确实相信这可以通过子查询来完成,如下所示:

select  count(*)
from private_messages pm
where pm.recipient_id = '" . $user_id . "'
and pm.id not in (
select message_id
from pm_views
)
and pm.sender_id in (
select id
from users
)

关于mysql - 如何排除 tableA 的选择查询中的记录,其中 tableA.user_id 在 user.id 中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22768714/

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