【发布时间】:2021-08-09 14:19:19
【问题描述】:
我有一个简单的加入方式:
SELECT field.table1, field.table2
LEFT JOIN table2 ON table2.table1 = table1.id
FROM table1
WHERE table1.id = [changing id];
其中 table1.id 是自增索引,table2.table1 是从 table1 到 table2 的 1:n 键。
现在我需要做类似的事情:
SELECT field.table1, field.table2
LEFT JOIN table2 ON
[ IF table1.id = 1 THEN table2.table1 IN (10, 11, 12)
IF table1.id = 2 THEN table2.table1 IN (13, 14)
IF table1.id = 3 THEN table2.table1 IN (15)
IF table1.id = 4 THEN table2.table1 IN (16, 17, 18)]
FROM table1
WHERE table1.id = [changing id];
这样做的正确语法是什么?
请记住,这只是一个示例。我需要这样做是有原因的(内涵 1 => 10,11,12, 2 => 13,14 等不是来自数据库/孔查询被动态输入另一个系统,我无法更改以及查询在哪里完成,所以我现在不知道 id)。
【问题讨论】:
-
and ((table1.id = 1 AND table2.table1 IN (10, 11, 12)) OR (table1.id = 2 AND table2.table1 IN (13, 14)) OR ... -
虽然完全有可能做到这一点,但我真的觉得这是其中一种情况,你的真正目标的一些背景将使找到一个好的解决方案变得容易得多。因为一般情况下你不应该这样跳来跳去,这会导致用户体验很差。