SQL选择行,其中每个id至少有一个值

Kin*_*ong 0 mysql

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

所以我有一个带有id和状态的表以及每个id具有不同状态值的多个记录.如何仅返回一个表,其中至少有一个id的记录是某个值?所以,例如,如果我有

 id|state
  1|CA
  1|ZZ
  1|ZZ
  2|NY
  2|CA
  3|NY
  4|IL
  4|ZZ
Run Code Online (Sandbox Code Playgroud)

我希望他们有在纽约的记录

 id|state
  2|NY
  2|CA
  3|NY
Run Code Online (Sandbox Code Playgroud)

Beg*_*ner 7

你可以试试这个:

SELECT *
FROM tablename
WHERE id IN (SELECT id FROM tablename WHERE state = 'NY');
Run Code Online (Sandbox Code Playgroud)

  • @ragerory检查所需的输出. (2认同)