1

我正在尝试根据另一个表中的输入值来选择一个表。让我们说

SELECT tale0.*,class.*,hamburger.* 
FROM 
    CASE tale0.id=1 
        THEN class 
    END 
        CASE tale0.id=2 
            THEN hamburger

这是要走的路还是有不同的方法?

4

2 回答 2

2

不,您不能在 FROM 子句中使用 CASE 语句。您需要加入两个表,然后根据值从相关表中提取字段:

SELECT
    tale0.*,
    CASE WHEN tale0.id = 1 THEN class.Column1 ELSE hamburger.Column1 END as Column1,
    CASE WHEN tale0.id = 1 THEN class.Column2 ELSE hamburger.Column2 END as Column2,
    ...
FROM
    table0, class, hamburger
-- include join conditions
于 2012-04-13T20:08:25.250 回答
0

另一种解决方法是

SELECT TALE0.*, CLASS.*, NULL AS HF1, NULL AS HF2, NULL AS HF3
  FROM TALE0
  INNER JOIN CLASS
    ON CLASS.whatever = TALE0.whatever
UNION ALL
SELECT TALE0.*, NULL AS CF1, NULL AS CF2, NULL AS CF3, HAMBURGER.*
  FROM TALE0
  INNER JOIN HAMBURGER
    ON HAMBURGER.whatever = TALE0.whatever

您需要拥有与 HAMBURGER 中的字段一样多的 HF1、HF2、HF3 等字段 - 并使用 HAMBURGER 中的字段名称而不是 HF1、HF2、HF3 等。同样 - 应替换 CF1、CF2 等通过 CLASS 中的字段名称。

祝你好运。

于 2017-12-10T00:54:54.083 回答