MYSQL QUERY:为每个相册从表中选择 1 行照片
Posted
技术标签:
【中文标题】MYSQL QUERY:为每个相册从表中选择 1 行照片【英文标题】:MYSQL QUERY : Select 1 rows photo from table for each album 【发布时间】: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 张随机照片.. 请相应修改您的问题 【参考方案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
【讨论】:
以上是关于MYSQL QUERY:为每个相册从表中选择 1 行照片的主要内容,如果未能解决你的问题,请参考以下文章