我有一个数据库,其中包含有关用户创建的项目的信息。每个项目可以有许多与之关联的图像,我希望有一个 SQL 查询,其中包含 4 个随机项目图像,但不应从同一项目返回图像两次。
这是对表结构的回顾(不完整,但包括相关信息):
表 1:item_images:
+----------+--------------+
| item_id | filename |
+----------+--------------+
| 1 | test.jpg |
| 1 | test2.jpg |
| 5 | testy.jpg |
+----------+--------------+
表2:item_link:
+----------+-------------+
| item_id | category_id |
+----------+-------------+
| 1 | 1 |
| 5 | 1 |
+----------+-------------+
因此,鉴于上述数据,我想为项目 #1 和 5 返回一个随机图像,因为它们都存在于类别 #1 中。
这是我已经尝试过的 SQL 查询,但由于某种原因,它总是返回相同的两个图像。我该如何修改它以从匹配的项目中返回随机图像?
SELECT `item_images`.`filename` AS `url` FROM `item_images`
INNER JOIN `item_link` ON `item_images`.`item_id` = `item_link`.`item_id`
WHERE `item_link`.`category_id` = 1
GROUP BY `item_link`.`item_id`
ORDER BY RAND()
LIMIT 4