使用具有多个值的Where子句的SQL语句

Sop*_*hie 41 sql

我有一个包含多行的表,其中包含以下字段:

PersonName SongName Status
Run Code Online (Sandbox Code Playgroud)

我想使用从多选列表框中选择的名称,我可以检索值,然后执行where子句,以便显示所选人员可以播放的歌曲名称,因此状态已完成.

例如:

 PersonName      SongName    Status 
 Holly           Highland    Complete
 Holly           Mech        Complete 
 Ryan            Highland    Complete
Run Code Online (Sandbox Code Playgroud)

如果我从列表框中选择Holly和Ryan并按下按钮,则查询应该只显示Highland,因为这是他们都知道的.

Mos*_*cho 72

试试这个:

select songName from t
where personName in ('Ryan', 'Holly')
group by songName
having count(distinct personName) = 2
Run Code Online (Sandbox Code Playgroud)

拥有的数字应该与人数相匹配.如果您还需要Complete使用此where子句而不是前一个子句:

where personName in ('Ryan', 'Holly') and status = 'Complete'
Run Code Online (Sandbox Code Playgroud)


sll*_*sll 11

SELECT PersonName, songName, status
FROM table
WHERE name IN ('Holly', 'Ryan')
Run Code Online (Sandbox Code Playgroud)

如果您使用的是参数化存储过程:

  1. 传入逗号分隔的字符串
  2. 使用特殊函数将逗号分隔的字符串拆分为表值变量
  3. 使用INNER JOIN ON t.PersonName = newTable.PersonName包含传入名称的表变量