繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM