“IN”条款中的子查询

时间:2012-04-11 20:21:40

标签: mysql sql subquery

SELECT * FROM `image_appreciations`
WHERE `image_id` IN(SELECT `id` FROM `images` WHERE `user_id` = '1')

是我当前的查询,它返回零结果

SELECT `id` FROM `images` WHERE `user_id` = '1'

作为子查询返回大约8个id,其中两个在

中找到
SELECT * FROM `image_appreciations`
WHERE `image_id` IN(77,89)

这很好用。但总之,它失败了。我做错了什么?

2 个答案:

答案 0 :(得分:6)

这可以使用JOIN完成。下面是使用隐式短手语法的示例。

SELECT * FROM image_appreciations a, images i
WHERE a.image_id = i.id AND i.user_id = 1

答案 1 :(得分:4)

像这样的子查询“应该”起作用,奇怪的是它不是。无论如何,您可以尝试使用JOIN来解决此问题。

SELECT * FROM `image_appreciations`
JOIN `images` ON `image_id` = `id`
WHERE `images`.`user_id` = '1'
相关问题