我正在尝试根据另一个表中的输入值来选择一个表。让我们说
SELECT tale0.*,class.*,hamburger.*
FROM
CASE tale0.id=1
THEN class
END
CASE tale0.id=2
THEN hamburger
这是要走的路还是有不同的方法?
不,您不能在 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
另一种解决方法是
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 中的字段名称。
祝你好运。