SELECT * FROM table1 LEFT JOIN (CASE WHEN column1 = 'value1' THEN table2 WHEN column1 = 'value2' THEN table3 ELSE table4 END) ON table1.id = table2.id OR table1.id = table3.id OR table1.id = table4.id 语法不对
时间: 2023-12-22 14:05:42 浏览: 109
SELECT 的另类用法
你需要使用子查询来实现你的逻辑,如下所示:
```
SELECT *
FROM table1
LEFT JOIN (
SELECT *
FROM table2
WHERE column1 = 'value1'
UNION ALL
SELECT *
FROM table3
WHERE column1 = 'value2'
UNION ALL
SELECT *
FROM table4
WHERE column1 NOT IN ('value1', 'value2')
) AS subquery
ON table1.id = subquery.id
```
在这个查询中,我们使用了三个子查询,每个子查询都对应一个表,并且使用 UNION ALL 将这三个表组合成一个虚拟表。然后,我们将虚拟表作为一个子查询,与 table1 进行 LEFT JOIN 操作。这样就可以根据 column1 的值来选择不同的表,并且通过 OR 连接起来,实现了你想要的逻辑。
阅读全文