mysql:像where子句中的通配符

irtuqstp  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(368)

我从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子句中的通配符是否太多了?是自连接导致了问题吗?有没有不同的编码方法?我只是愚蠢吗?
我希望有人能帮助我。谢谢您。

yfwxisqw

yfwxisqw1#

它的due to子查询返回超过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%')

相关问题