我希望使用 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
记录。
如果两个表都有匹配的记录,那么由于您是按源表的名称(A
或 B
)排序,因此限制将确保仅A
表中的第一行出现。
关于mysql - 如果表 1 没有结果,则从语句 2 中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26267265/