在同一列中多次使用 "or" ,"and", "like"

Using "or" ,"and", "like" several times in same column

如果我有这样的table:

id     car
1       A
1       B
1       C
1       D
2       A
2       B
2       C
2       F
3       A
3       C
3       E
3       F
3       G

我想要的是 car 中有 ("A" or "C") and "B" 的不同 "id"。例如:

id    car
1      A
1      B
1      C
2      A
2      B
2      C

我所做的是

select * from table where (car like "A" or car like"C") and (car like "B")

但它给了我一个空行。

有线索吗?

您可以使用自连接

SELECT t1.id
FROM yourTable AS t1
JOIN yourTable AS t2 ON t1.id = t2.id
WHERE t1.car IN ('A', 'C')
AND t2.car = 'B'

顺便说一句,您通常应该只在进行模式匹配时使用 LIKE。对于精确匹配,使用 =IN 匹配多个项目中的任何一个。

未经测试,但类似这样的方法应该可行:获取所有具有该 ID 的行,使其在所有具有 A 或 C 的 ID 列表中以及在所有具有B.

SELECT t.*
FROM mytable t
WHERE t.id IN (
  SELECT DISTINCT id
  FROM mytable t2
  WHERE t2.car='A' OR t2.car='C'
)
AND t.id IN (
  SELECT DISTINCT id
  FROM mytable t3
  WHERE t3.car='B'
)