接收同一列但具有不同值的类型的列表

时间:2020-02-04 23:34:03

标签: sql select where-clause

表t:

类型(col1)||值(col2)

5(Col1)的值为73(Col2),

6(Col1)的值为80(Col2),

7(Col1)的值为65(Col2),

我想要col 1中所有值(col 2)等于73和80的类型的列表。

我尝试做:

  SELECT `type` FROM t
  WHERE `value` = 73 
  AND `value` = 80

在db.execute()调用之后,我只是返回一个列表[]。 感谢任何帮助

2 个答案:

答案 0 :(得分:2)

如果您想同时使用两个type的{​​{1}},则需要比较不同行上的值。聚合可以做到这一点:

value

如果数据可以重复,则只需要SELECT `type` FROM t WHERE `value` IN (73, 80) GROUP BY type HAVING COUNT(DISTINCT type) = 2; 。如果无法做到这一点,请改用COUNT(DISTINCT)

答案 1 :(得分:1)

我想要列1的所有类型(列2的值分别等于73和80)的列表。

您对记录的条件检查具有两者值73和80,它们不可能成功。

您希望使用OR

SELECT `type` FROM t WHERE `value` = 73 OR `value` = 80

您可以使用IN

来缩短它
SELECT `type` FROM t WHERE `value` IN (73, 80)