【问题标题】:MYSQL QUERY : Select 1 rows photo from table for each albumMYSQL QUERY:为每个相册从表中选择 1 行照片
【发布时间】:2015-02-26 22:36:32
【问题描述】:

我有一个记录表,它有一个名为画廊的表。我插入了太多照片,我只想从每个图库中随机选择 2 张照片。

这是我的结构化

CREATE TABLE IF NOT EXISTS `gallery` (
`gallery_id` int(11) NOT NULL,
  `gallery_name` varchar(100) NOT NULL,
  `gallery_name_seo` varchar(120) NOT NULL,
  `gallery_client` varchar(100) NOT NULL,
  `gallery_date` date NOT NULL,
  `gallery_type` int(2) NOT NULL,
  `gallery_desc` text,
  `gallery_publish` char(1) NOT NULL DEFAULT 'N' COMMENT 'Y = Yes & N = No',
  `gallery_added` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `deleted` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

这里还有一张桌子

CREATE TABLE IF NOT EXISTS `gallery_photo` (
`id` int(10) NOT NULL,
  `id_gallery` int(10) NOT NULL,
  `file_name` varchar(255) NOT NULL,
  `file_added` date NOT NULL,
  `deleted` smallint(6) NOT NULL DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1;

其实这里有很多例子,但我很难理解,

如何根据我的问题创建查询。?

谢谢

【问题讨论】:

  • 太棒了。那么有什么问题呢?
  • “我只想从每个画廊中选择 2 张照片” – 两张什么?最旧的、最新的、随机的……两张照片?
  • 我想为每个画廊显示 2 张随机照片..
  • 请相应修改您的问题

标签: mysql jointable


【解决方案1】:

以下查询将为每个 id_gallery 提供 1 张随机照片:

SELECT * 
FROM (SELECT * FROM `gallery_photo` ORDER BY RAND()) as `rand_photos`
GROUP BY rand_photos.id_gallery

你可以UNION它自己为每个画廊随机获取 2 张照片:

SELECT * 
FROM (SELECT * FROM `gallery_photo` ORDER BY RAND()) as `rand_photo1`
GROUP BY rand_photo1.id_gallery
UNION
SELECT * 
FROM (SELECT * FROM `gallery_photo` ORDER BY RAND()) as `rand_photo2`
GROUP BY rand_photo2.id_gallery
ORDER BY id_gallery

【讨论】:

    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 2010-11-11
    • 2019-03-16
    • 2015-12-21
    • 2015-10-20
    • 2016-07-24
    • 2022-10-14
    • 1970-01-01
    相关资源
    最近更新 更多