【发布时间】:2011-09-21 23:32:32
【问题描述】:
我想从 2 个不同的 mysql 表中收集数据,按时间戳对结果进行排序,但不将 2 个表的列合并到一行中。
T_ONE(one_id,one_someinfo,one_ts)
T_TWO(two_id,two_otherinfo,two_ts)
注意字段 two_otherinfo 与 one_someinfo 不同,唯一的共同点是 id 和 timestamp。
结果应该是按时间戳排序的两个表的混合,但根据时间戳,每一行应该只包含表的相应列。
例如,如果最新记录来自 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 和以下的表格帖子的第三条记录......因为表格彼此有不同的字段,结果的第一行应包含表格星星的列,而表格帖子的列应为空。
【问题讨论】:
-
如果您需要提供其他信息,只需编辑您的问题。
标签: mysql