我想从2个不同的mysql表中收集数据,按照时间戳排序结果,但不将两个表中的列合并到一行中。MySQL从2个不相关的表中选择记录按时间戳排序
T_ONE(one_id
,one_someinfo
,one_ts
)
T_TWO(two_id
,two_otherinfo
,two_ts
)
注意,字段two_otherinfo是不一样的one_someinfo,在共同的列只有ID和时间戳。
结果应该是由时间戳排序的两个表的混合,但根据时间戳,每行应该只包含表的相应列。
例如,如果最新记录来自T_TWO那行应该有T_ONE列为空的one_someinfo
列。
我只需要订购来自T_ONE的最新消息和发布在T_TWO上的最新消息,因此这些表格无关。我想避免使用2个查询,然后通过使用PHP的时间戳来合并和排序结果。有没有人知道这个解决方案?在此先感谢
这是表的结构
CREATE TABLE `posts` (
`id` int(10) unsigned NOT NULL auto_increment,
`fromid` int(10) NOT NULL,
`toteam` int(10) NOT NULL,
`banned` tinyint(1) NOT NULL default '0',
`replyid` int(15) default NULL,
`cont` mediumtext NOT NULL,
`timestamp` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE `stars` (
`id` int(10) unsigned NOT NULL auto_increment,
`daynum` int(10) NOT NULL,
`userid` int(10) NOT NULL,
`vote` tinyint(2) NOT NULL default '3',
`timestamp` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
INSERT INTO `posts` (`fromid`, `toteam`, `banned`, `replyid`, `cont`, `timestamp`) VALUES(5, 12, 0, 0, 'mess posted#1', 1222222220);
INSERT INTO `posts` (`fromid`, `toteam`, `banned`, `replyid`, `cont`, `timestamp`) VALUES(5, 12, 0, 0, 'mess posted#2', 1222222221);
INSERT INTO `posts` (`fromid`, `toteam`, `banned`, `replyid`, `cont`, `timestamp`) VALUES(5, 12, 0, 0, 'mess posted#3', 1222222223);
INSERT INTO `stars` (`daynum`, `userid`, `vote`, `timestamp`) VALUES(3, 160, 4, 1222222222);
INSERT INTO `stars` (`daynum`, `userid`, `vote`, `timestamp`) VALUES(4, 180, 3, 1222222224);
通过timestamp DESC
结果排序应该是台星与timestamp
1222222224然后表职位的第三条记录的第二个记录与timestamp
1222222223以及...因为表格之间有不同的字段,所以结果的第一行应该包含表格列的列,而表格列的列应该是空的。
只需编辑您的问题,如果您需要提供其他信息。 –