MySQL:首次查询有结果返回结果,无结果则执行二次查询的实现方法
在MySQL中实现优先查询逻辑的几种方法
你需要实现的是优先返回Table1的Column1结果,当Table1无数据时再返回Table2的Column1,下面是几种可行的实现方式:
修正你提供的示例写法
你给出的示例存在语法错误(缺少一个闭合括号),修正后的写法如下:
SELECT IF(EXISTS(SELECT Column1 FROM Table1), (SELECT Column1 FROM Table1), (SELECT Column1 FROM Table2));
不过这种写法有个弊端:如果Table1有数据,会执行两次SELECT Column1 FROM Table1查询,在数据量较大时效率偏低。
更高效的实现方式
推荐使用UNION ALL结合LIMIT的写法,仅需查询一次Table1,性能更优:
SELECT Column1 FROM Table1 UNION ALL SELECT Column1 FROM Table2 LIMIT 1;
这个逻辑是:先从Table1获取数据,若有结果则返回第一条(LIMIT 1限制行数);若Table1无数据,则返回Table2的第一条结果。如果需要确保即使表中有多条数据也只返回一条,该写法同样适用。
内容的提问来源于stack exchange,提问作者Láďa
相关产品推荐
相关产品推荐

