我必须使用X,Y,Z列的XY和XZ表。我可以像这样加入它们:
SELECT XY.*,XZ.Z
FROM XY
INNER JOIN XZ
ON XY.X = XZ.X
但是如果出现某种情况(例如X = 0)我不仅要从XZ表中获取数据,还要从具有X,Z列的另一个查询(函数,表)获取数据。我知道UNION,但我不知道在这种情况下如何使用它并编写IF语句。我的意思是这样的(请原谅我这个抽象语法我只想解释正确的问题):
SELECT XY.*,XZ.Z
FROM XY
INNER JOIN IF(X = 0)XZ ELSE (XZ UNION SOME_TABLE)
ON XY.X = XZ.X
答案 0 :(得分:2)
SELECT XY.*, AT.*, XZ.Z
FROM XY
INNER JOIN XZ
ON XY.X = XZ.X
LEFT JOIN another_table AT
ON AT.X = XY.X AND XY.X = 0
答案 1 :(得分:1)
对XZ和SOME_TABLE内的数据做了很多假设。
SELECT
XY.*,
CASE WHEN XZ.Z = 0 THEN ST.Z
ELSE XZ.Z
END
FROM XY INNER JOIN XZ ON ON XY.X = XZ.X
LEFT OUTER JOIN SOME_TABLE ST ON XY.X = ST.X