为了提高性能,我想将 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/