Я выбрал данные из базы данных MySQL, и я пытаюсь заменить WHERE column_name = 'name'
подстановочным знаком, например WHERE column_name LIKE '%name%'
.
Звучит слишком просто, не так ли?
Исходный код (который отлично работает) выглядит так:
SELECT DISTINCT a.title_id, a.artist_id, fe_title.title, fe_artist.artist
FROM fe_title_artist AS a
INNER JOIN fe_title ON a.title_id = fe_title.id
INNER JOIN fe_artist ON a.artist_id = fe_artist.id
INNER JOIN fe_title_artist AS b
WHERE a.title_id=b.title_id
and b.artist_id=(SELECT id FROM fe_artist WHERE artist = 'Patrick Duffy')
То, что я пробовал и не выполнил, выглядит следующим образом:
SELECT DISTINCT a.title_id, a.artist_id, fe_title.title, fe_artist.artist
FROM fe_title_artist AS a
INNER JOIN fe_title ON a.title_id = fe_title.id
INNER JOIN fe_artist ON a.artist_id = fe_artist.id
INNER JOIN fe_title_artist AS b
WHERE a.title_id=b.title_id
and b.artist_id=(SELECT id FROM fe_artist WHERE artist LIKE '%Patrick%')
Никаких результатов по этому поводу.
Является ли подстановочный знак внутри предложения where слишком большим? Является ли самосоединение причиной проблемы? Есть ли способ кодировать это по-другому? Я просто глуп?
Я надеюсь, что кто-то может помочь мне. Спасибо.
Это связано с тем, что Subquery возвращает более 1 строки. Пожалуйста, используйте ниже запрос.
SELECT DISTINCT a.title_id, a.artist_id, fe_title.title, fe_artist.artist
FROM fe_title_artist AS a
INNER JOIN fe_title ON a.title_id = fe_title.id
INNER JOIN fe_artist ON a.artist_id = fe_artist.id
INNER JOIN fe_title_artist AS b
WHERE a.title_id=b.title_id
and b.artist_id IN (SELECT id FROM fe_artist WHERE artist LIKE '%Patrick%')
SELECT id FROM fe_artist WHERE artist LIKE '%Patrick%'
??artist_id=
может быть проблемой. Он будет ожидать один результат от выбора. Попробуйтеartist_id in (SELECT
.