mysql - 如果表 1 没有结果,则从语句 2 中选择

标签 mysql sql

我希望使用 MySQL 做一些我不确定是否可能或值得在一个查询中做的事情。

我对表 A 中的第 1、2、3 列感兴趣。

SELECT 1, 2, 3
FROM A
WHERE 1 = somevalue

如果上述内容未出现,则或表 B 中的第 4、5、6 列。

SELECT 4, 5, 6
FROM B
WHERE 4 = some value

我查看了 case 语句,但如果第一个表中不存在另一个值,我不太确定在另一个表中查找值的适当语法。

最佳答案

SELECT * 
FROM (
    SELECT 1,2,3, 'A' AS source
    FROM A
    WHERE 1 = somevalue

    UNION ALL

    SELECT 4,5,6, 'B'
    FROM B
    WHERE 4 = somevalue
) AS subs
ORDER BY source ASC
LIMIT 1

从两个表中获取两组记录,并按派生的“源”字段进行排序。如果 A 表中没有匹配的记录,则该子查询将不会返回任何行,并且您将仅获得 B 记录。

如果两个表都有匹配的记录,那么由于您是按源表的名称(AB)排序,因此限制将确保仅A 表中的第一行出现。

关于mysql - 如果表 1 没有结果,则从语句 2 中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267265/

相关文章:

mysql - javax.servlet.ServletException : java. lang.ClassNotFoundException : com. mysql.jdbc.Driver

MySQL 和 Coldfusion 日期问题

mysql - 在MySQL中将列填充到最大值?

mysql - 通过id获取最多的计数

mysql - 在 MySQL 中选择多个值作为数组

java - Hibernate MySQL 查询错误“Join On 中的未知列”

php - 如何在表格中水平和垂直打印数据

c++ - native C++ SQL 框架

MySQL如何从一个列中获取数据并放入同一ID和同一表下的另一列

php - 如果数据库为空,如何添加一条数据?