gpt4 book ai didi

mysql - 根据从另一个表中选择的 ID 计算其他表中字段值的行数

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

我有下表:

conversation_folder {
conversation_folder_id,
user_id
...
}

conversation_user {
conversation_id
owner_user_id
is_unread
}

conversation_folder_relations {
conversation_id
conversation_folder_id
user_id
}

我想从 conversation_folder 表中选择记录,但是我想包含文件夹中未读取的特定 对话的数量user_id(conversation_user 表中的 owner_user_id)。

这可以通过一个查询实现吗?还是我必须获取文件夹,然后运行另一个查询来获取未读计数?

编辑:

为了增加明显性,这个查询提供了所需的结果,但它涉及多个子查询,这远非理想:

SELECT conversation_folder.*,
(
SELECT COUNT(conversation_id)
FROM conversation_user
WHERE conversation_id IN (
SELECT conversation_id
FROM conversation_folder_relations
WHERE conversation_folder_relations.user_id = conversation_user.owner_user_id
AND conversation_folder_id = conversation_folder.conversation_folder_id
)
AND is_unread = 1
) AS unread_count
FROM conversation_folder
WHERE conversation_folder.user_id = ?

最佳答案

单独查询两者可能是最好的。这也可以通过对 user_id 和 Owner_user_id 列进行联接,然后对结果表进行计数来解决。但众所周知,如果在 SqlServer 上使用不当,联接会对性能造成影响,也许 MySql 有所不同。这是未经测试的,因为我只使用过 SqlServer。

SELECT count(conversation_id)
FROM conversation_user
INNER JOIN conversation_folder_relations
ON conversation_user.owner_user_id = conversation_folder_relations.user_id;

http://www.w3schools.com/sql/sql_join_inner.asp

关于mysql - 根据从另一个表中选择的 ID 计算其他表中字段值的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569527/

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