Заявление SQL с использованием предложения Where с несколькими значениями

У меня есть таблица с несколькими строками со следующими полями:

PersonName SongName Status 

Я хочу использовать имена, выбранные из нескольких списков выбора, которые я могу получить значения, а затем сделать предложение where, чтобы он показывал имена песен, которые могут выбрать выбранные люди, поэтому статус завершен.

Например:

  PersonName SongName Status Holly Highland Complete Holly Mech Complete Ryan Highland Complete 

Если я выберу Холли и Райана из списка и нажмите кнопку, запрос должен просто показать Хайленд, так как это то, что они оба знают.

Попробуй это:

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

Количество в наличии должно соответствовать количеству людей. Если вам также нужно, чтобы статус, который должен быть Complete использовал это предложение where , а не предыдущее:

 where personName in ('Ryan', 'Holly') and status = 'Complete' 
 SELECT PersonName, songName, status FROM table WHERE name IN ('Holly', 'Ryan') 

Если вы используете параметризованную хранимую процедуру:

  1. Передать строку, разделенную запятой
  2. Используйте специальную функцию для разделения строки, разделенной запятыми, на переменную таблицы
  3. Использовать INNER JOIN ON t.PersonName = newTable.PersonName используя переменную таблицы, которая содержит переданные имена
 Select t1.SongName From tablename t1 left join tablename t2 on t1.SongName = t2.SongName and t1.PersonName <> t2.PersonName and t1.Status = 'Complete' -- my assumption that this is necessary and t2.Status = 'Complete' -- my assumption that this is necessary and t1.PersonName IN ('Holly', 'Ryan') and t2.PersonName IN ('Holly', 'Ryan')