我希望用MySQL做一些我不确定在一个查询中是否可行或值得做的事情。
我有表A中的第1,2,3列,我感兴趣。
SELECT 1, 2, 3
FROM A
WHERE 1 = somevalue
如果上面没有出现,则表B中的OR 4,5,6列。
SELECT 4, 5, 6
FROM B
WHERE 4 = some value
我查看了case语句,但是我不太确定在另一个表中找到值的合适语法,如果第一个表中没有另一个值。
答案 0 :(得分:0)
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
表出现了。
答案 1 :(得分:0)
查看描述IF
语句语法的this answer。
我是一个SQL Server的人,所以我可能会弄错,但是这样的事情应该对你有用:
BEGIN
IF ((SELECT BLAH FROM A) = BLAH) THEN
SELECT BLAH FROM A;
ELSEIF ((select BLAH from B) = BLAH) THEN
SELECT BLAH FROM B;
END IF
END
您可能希望在SELECT count(*) FROM A WHERE X
声明中执行IF
之类的操作。