【问题标题】:MySQL random joinMySQL 随机连接
【发布时间】:2012-11-20 17:52:48
【问题描述】:

这是我的 MySQL 数据库:

我查询所有子类别:

SELECT `a`.`id`, `a`.`name`, `a`.`url_segment`, `a`.`categories_id`, `b`.`image` AS supplements_image
FROM (`subcategories` AS a)
LEFT JOIN `supplements` AS b ON `b`.`subcategories_id` = `a`.`id`
LEFT JOIN `reviews` AS c ON `c`.`supplements_id` = `b`.`id`
GROUP BY `a`.`id`
ORDER BY `a`.`categories_id` ASC, COUNT(c.id) DESC, `b`.`image` ASC

问题在于子类别图片,它应该是该子类别中随机产品的图片,但我总是得到第一个产品的图片。知道我该怎么做吗?

【问题讨论】:

    标签: mysql join random


    【解决方案1】:
    SELECT `a`.`id`, `a`.`name`, `a`.`url_segment`, `a`.`categories_id`, 
            (SELECT `image` 
             FROM `supplements` 
             WHERE `subcategories_id` = `a`.`id` 
             ORDER BY RAND() LIMIT 1
            ) AS supplements_image
    FROM (`subcategories` AS a)
    LEFT JOIN `reviews` AS c ON `c`.`supplements_id` = `a`.`id`
    GROUP BY `a`.`id`
    ORDER BY `a`.`categories_id` ASC, COUNT(c.id) DESC
    

    编辑了未指定的别名 b,现在效果很好:See fiddle!

    【讨论】:

      猜你喜欢
      • 2020-09-02
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      相关资源
      最近更新 更多