[英]How to merge these 2 MySQL Select queries?
由于性能提高,我想将2个MySQL查询合并为2个。 基本上,我希望查询在2个表中搜索一个元素。 如果在其中一个中找不到,则应该在另一个中进行搜索。 这就是我创建2个查询的原因,但是我敢肯定它在日志运行中会比1个查询慢。
我有以下两个查询:
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
但我认为这不会比运行两个单独的查询更快。
尝试使用COALESCE
SELECT COALESCE(a_id,
(SELECT b_id FROM table2 WHERE name = 'George'))
FROM table1 WHERE name = 'George'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.