gpt4 book ai didi

php - SQL - 如果存在于另一个表中

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:02 26 4
gpt4 key购买 nike

有 2 个表:subjectsmessages

主题表:

----id----   ----title----
1 Subject 1
2 Subject 2
3 Subject 3

消息表:

----id----   ----subject----   ----message----
1 1 Message to Subject 1
2 1 Message to Subject 1
3 2 Message to Subject 2

如何获取subjectsmysql_num_rows,其中messages中是否有消息?结果一定是2,因为Subject 1在messages中有消息,而Subject 2在messages中有消息,而Subject 3在messages中没有收到任何消息

类似于:

mysql_num_rows(mysql_query("SELECT * FROM subjects ...

最佳答案

您通常会为此目的使用 inexists:

select count(*)
from subjects s
where exists (select 1 from messages m where m.subject_id = s.id);

这可以很容易地修改以获得没有消息的主题。

如果您在表之间定义了适当的外键关系,那么您可以只计算消息中的主题:

select count(distinct m.subject_id)
from messages;

MySQL 中的聚合非常昂贵。在某些情况下,这会表现得更好。但是,假设您在 messages(subject_id) 上有一个索引,那么 exists 在大多数情况下可能会表现得更好。








关于php - SQL - 如果存在于另一个表中,我们在Stack Overflow上找到一个类似的问题:

https://stackoverflow.com/questions/44112831/




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