返回随机图像SQL

时间:2012-11-03 12:07:23

标签: mysql sql

我有一个数据库,其中包含有关用户创建的项目的信息。每个项目都可以有多个与之关联的图像,我希望有一个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

2 个答案:

答案 0 :(得分:1)

要从表中查找随机图像,查询如下:

SELECT distinct `item_images`.`filename` AS `url` FROM `item_images`, `item_link` 
  WHERE `item_images`.`item_id` = `item_link`.`item_id` and `item_link`.`category_id` = 1 
  ORDER BY RAND()
  LIMIT 4

解决你的问题

答案 1 :(得分:1)

webduos是正确的,应该解决你的问题

这里是explaination

SELECT distinct `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