56,675
社区成员
发帖
与我相关
我的任务
分享
SELECT id,
TYPE , img, createtime
FROM (
SELECT id,'blog'
TYPE , img, createtime
FROM blog
UNION ALL SELECT id,'photo'
TYPE , img, createtime
FROM photo
)tmp
ORDER BY createtime
LIMIT 0 , 30
create view v_mixblogphoto
as
select id,'blog' type,title,img,createtime from blog
union all
select id,'photo' type,title,img,createtime from photo
SELECT*
FROM`v_mixblogphoto`
ORDERBY createtime
LIMIT 0 , 30
--
-- 表的结构 `blog`
--
CREATE TABLE IF NOT EXISTS `blog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` varchar(255) NOT NULL,
`img` varchar(255) NOT NULL,
`createtime` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- 转存表中的数据 `blog`
--
INSERT INTO `blog` (`id`, `title`, `content`, `img`, `createtime`) VALUES
(1, '博文1', '内容1', '/data/1.jpg', 135),
(2, '博文2', '内容2', '/data/2.jpg', 139);
-- --------------------------------------------------------
--
-- 表的结构 `photo`
--
CREATE TABLE IF NOT EXISTS `photo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`img` varchar(255) NOT NULL,
`createtime` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- 转存表中的数据 `photo`
--
INSERT INTO `photo` (`id`, `title`, `img`, `createtime`) VALUES
(1, '图片1', '/data/3.jpg', 137);
-- --------------------------------------------------------
--
-- 实现效果
--
id type title img createtime
1 'blog' '博文1' '/data/1.jpg' 135
1 'photo' '图片1' '/data/3.jpg' 137
2 'blog' '博文2' '/data/2.jpg' 139
因为有个页面需要混合展示日志和相册(瀑布流或者分页),按照时间排序,这2个表是没有任何联系的,能用sql语句实现么,现在我的做法是blog和photo先读取数据后(limit)在程序中把2个结果合并后按照createtime排序,不过这样做其实没有真正达到按照createtime排序