使用包含多个记录的WHERE / sub查询进行查询

时间:2014-01-31 18:39:27

标签: mysql

这是我的疑问:

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 =”部分和子查询允许多行?

提前感谢您的帮助。

1 个答案:

答案 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
相关问题