php - 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
非常感谢您的帮助。
解决方案
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
还有很多其他变体。有效性取决于精确的表结构(主要是现有索引)。
推荐阅读
- r - 如何在 R 中对指定值 x 处的 y 平均值执行假设检验
- google-apps-script - 用于多列下拉菜单的 Google onEdit 脚本
- flutter - 如何在我们的应用程序中维护 API 数据
- linux - 在没有包装脚本的情况下将 stderr 和 stdout 写入文件
- azure-devops - Azure Devops OpenShift 并行发布
- c++ - 使用 registerConstructor 注入 Mock
- javascript - 递归方法继续前进,但方向相反。为什么?
- docker - Nginx 反向代理无法与容器通信
- c++ - 如何找到当前用户名和系统盘?
- flutter - ElevatedButton 不接受 SizedBox 的限制