这是我的疑问:
SELECT * FROM img_ref WHERE id_img = (SELECT `id_img` FROM img_ref WHERE `id_user`=4)
我正在尝试从附加到特定id_user的img_ref WHERE id_img = id_img中选择记录。
但是,子查询包含多行/结果,因此会抛出错误“Subquery返回多行”。我怎么能修改这个语句,以便“WHERE id_img =”部分和子查询允许多行?
提前感谢您的帮助。
答案 0 :(得分:1)
使用带有equals的子查询时,子查询只能返回单个记录。通常,您只需使用IN
返回多条记录:
SELECT *
FROM img_ref
WHERE id_img IN (SELECT `id_img` FROM img_ref WHERE `id_user`=4)
出于性能原因(请查看此post),您可能希望将其移至JOIN
:
SELECT i.*
FROM img_ref i
JOIN img_ref i2 ON i.id_img = i2.id_img
AND i2.id_user=4