MySQL: WHERE 子句中的 LIKE 通配符
MySQL: LIKE Wildcard inside WHERE clause
我 SELECT 来自 MySQL 数据库的数据,我正在尝试用 WHERE column_name LIKE '%name%'
.
之类的通配符替换 WHERE column_name = '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 子句中的通配符是否太多了?自连接是否导致问题?有没有办法对此进行不同的编码?我是不是傻了?
希望有人能帮助我。谢谢。
这是由于子查询 returns 多于 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 来自 MySQL 数据库的数据,我正在尝试用 WHERE column_name LIKE '%name%'
.
之类的通配符替换 WHERE column_name = '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 子句中的通配符是否太多了?自连接是否导致问题?有没有办法对此进行不同的编码?我是不是傻了?
希望有人能帮助我。谢谢。
这是由于子查询 returns 多于 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%')