Mysql 使用;或&引用;及&引用;例如;在同一列中多次

Mysql 使用;或&引用;及&引用;例如;在同一列中多次,mysql,sql-like,Mysql,Sql Like,如果我有这样一张桌子: 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 我想要的是不同的“id”,在汽车中有(“A”或“C”)和“B”。例如: id car 1 A 1 B 1 C 2 A 2 B 2

如果我有这样一张桌子:

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
我想要的是不同的“id”,在
汽车中有
(“A”或“C”)和“B”
。例如:

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'

顺便说一句,在进行模式匹配时,通常只应像
那样使用
。对于精确匹配,请使用
=
,或
中的
来匹配多个项目中的任何一项。

您可以使用自联接

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'

顺便说一句,在进行模式匹配时,通常只应像
那样使用
。对于精确匹配,请使用
=
中的
来匹配多个项目中的任何一项。

未测试,但类似的方法应该可以工作:获取具有ID的所有行,以便在具有A或C的所有ID的列表中以及具有B的所有ID的列表中找到该ID

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'
)

未经测试,但类似的方法应该可以工作:获取所有具有该ID的行,以便在具有A或C的所有ID的列表中,以及在具有B的所有ID的列表中找到该ID

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'
)

您正在同一行中查找两个不同的
car
。这是不可能的。使用或:
从类似于“A”的汽车或类似于“C”的汽车或类似于“B”的汽车的表格中选择*
@Barmar那么我该怎么办?@SardorDushamov ur code会给id car 1 A 1 B 1 C 2 A 2 B 2 C 3 A 3 B正确吗?您可以尝试此查询您正在同一行中查找
car
的两个不同值。这是不可能的。使用或:
从类似“A”或类似“C”或类似“B”的汽车所在的表中选择*
@Barmar那么我该怎么办?@SardorDushamov ur代码将为id car 1 A 1 B 1 C 2 A 2 B 2 C 3 A 3 B,对吗?您可以尝试此查询