假设我有一个这样的表:
id value
1 a
1 x
1 x
2 b
2 b
2 y
3 c
3 d
3 z
10 c
10 c
10 z
11 x
11 y
11 z
Run Code Online (Sandbox Code Playgroud)
我想选择ID(可以重复ID),其中值是a,b或c和d。因此,在这种情况下,我将选择1、2和3。请注意,每个id值组合都可以使用重复值。
我有这段代码可以工作:
SELECT id
FROM table
WHERE value = 'a' OR value = 'b'
UNION
SELECT t1.id
FROM table t1
INNER JOIN table t2
ON t1.id = t2.id
WHERE t1.value = 'c' AND t2.value = 'd'
Run Code Online (Sandbox Code Playgroud)
但是我的SQL技能很生锈,我无法动摇有更好的方法来做这件事。这将是一些复杂的旧版代码中间的子查询,因此我想确保我的代码简洁高效。
同样,这个问题不是重复的,因为它涉及基于一个行值或两个行值同时选择id的问题,我发现的所有问题都涉及基于两个行值的选择问题。我已经在查询的后半部分解决了该问题。