mysql - 如何合并这两个 MySQL Select 查询?

标签 mysql sql

为了提高性能,我想将 2 个 MySQL 查询合并为 2 个。基本上我希望查询在 2 个表中搜索元素。如果在一个中找不到,则应在另一个中搜索。这就是我创建 2 个查询的原因,但我确信它在日志运行中会比 1 个查询慢。

我有以下 2 个查询:

SELECT a_id FROM table1 WHERE name = 'George'
SELECT b_id FROM table2 WHERE name = 'George'

如何创建一个查询?它应该只在找到匹配项的地方返回 1 个 ID。

最佳答案

您可以使用 UNION ALL 查询:

SELECT a_id FROM table1 WHERE name = 'George'
UNION ALL
SELECT b_id FROM table2
WHERE
  name = 'George'
  AND NOT EXISTS (SELECT a_id FROM table1 WHERE name = 'George')

或者这个:

SELECT a_id, 1 as t FROM table1 WHERE name = 'George'
UNION ALL
SELECT b_id, 2 as t FROM table2 WHERE name = 'George'
ORDER BY t
LIMIT 1

但我认为这不会比运行两个单独的查询更快。

关于mysql - 如何合并这两个 MySQL Select 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22560818/

相关文章:

php - 带有 SET 变量语句的 Mysqli 查询(即多个查询)

mysql - 如何将数据库中两个表中的连接条目显示为 HTML 表?

mysql - 将 MySQL DECIMAL 转换为浮点 IEEE 表示形式的十六进制

如果没有图像上传到数据库,php设置默认图像

MySQL 从最后到开始检查条件是否为真,如果停止则返回

c# - 表没有得到更新,当使用 executeNonquery

sql - 使用不同参数多次执行参数化 liquibase 变更集

php - 使用Codeigniter,程序无法正常运行

mysql - PDO异常 : SQLSTATE[42000]

sql - 在SQL Server中存储CDA XML