-1

我必须拥有具有 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     
4

2 回答 2

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
于 2012-09-15T21:57:04.700 回答
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 
于 2012-09-15T22:00:03.487 回答