Mysql SQL选择每个id至少有一个值的行

Mysql SQL选择每个id至少有一个值的行,mysql,Mysql,我已经看过这些问题的其他答案,但还没有找到一个完全符合我要求的答案 所以我有一个包含id和状态的表,每个id有多条记录,状态值不同。如果一个id至少有一条记录是某个值,我如何返回一个只包含记录的表?例如,如果我有 id|state 1|CA 1|ZZ 1|ZZ 2|NY 2|CA 3|NY 4|IL 4|ZZ 我想要那些在纽约有记录的 id|state 2|NY 2|CA 3|NY 您可以尝试以下方法: SELECT * FROM tablen

我已经看过这些问题的其他答案,但还没有找到一个完全符合我要求的答案

所以我有一个包含id和状态的表,每个id有多条记录,状态值不同。如果一个id至少有一条记录是某个值,我如何返回一个只包含记录的表?例如,如果我有

 id|state
  1|CA
  1|ZZ
  1|ZZ
  2|NY
  2|CA
  3|NY
  4|IL
  4|ZZ
我想要那些在纽约有记录的

 id|state
  2|NY
  2|CA
  3|NY
您可以尝试以下方法:

SELECT *
FROM tablename
WHERE id IN (SELECT id FROM tablename WHERE state = 'NY');

从表_NAME中选择*,其中state='NY';为什么要这样做,而不是在state='NY'的位置?@ragerory检查所需的输出。@bigrabby不是吗?否则你怎么得到2|CA@BigRabbit是的,他希望所有记录都与一个ID关联,该ID有一个NY记录。是的,他注意到输出所需的。