首页 > 解决方案 > PHP MySQL在不同的表中找到相同的值

问题描述

我有 4 个不同的表(2017、2018、2019、2020)。

在每个表中都有这样的结构:id、name、stars、...

我想在上面提到的所有表格中确定值 star=4 的 id。输出如下:

ID
1234 4
5678 3
... ...

id 1234 4x(这意味着 id 在 2017-2020 年) id 5678 3x(id 仅在 4 个表中的 3 个中)等等......

不幸的是,我不知道 sql 命令应该是什么样子。我试过了。喜欢: SELECT id FROM '2019' JOIN '2020' WHERE stars=4

非常感谢您的帮助。

标签: phpmysql

解决方案


SELECT id, name
FROM ( SELECT id, name FROM table_2017 WHERE start = 4
       UNION ALL
       SELECT id, name FROM table_2018 WHERE start = 4
       UNION ALL
       SELECT id, name FROM table_2019 WHERE start = 4
       UNION ALL
       SELECT id, name FROM table_2020 WHERE start = 4 ) total
GROUP BY id, name
HAVING COUNT(*) = 4
SELECT id, name
FROM table_2017 
JOIN table_2018 USING (id, name, stars)
JOIN table_2019 USING (id, name, stars)
JOIN table_2020 USING (id, name, stars)
WHERE stars = 4

还有很多其他变体。有效性取决于精确的表结构(主要是现有索引)。


推荐阅读