我有三个表,每个表包含一个自动递增的PK。我需要从这些表的混合中选择最新的(即ORDERBY DESC)条目。
我想在一个查询中进行,有两个连接。
我的想法是以某种方式选择一个表,按id DESC
排序,然后以某种方式合并结果。
有没有人有办法(或者可能是更好的主意)这样做?
(使用mysql)
修改
对不起 - 这是一个更详细的规范:
我有三个表,posts
,stories
,favs
。
每个列都有(至少)三列id
,uid
和date
。他们都是 PK。 id
自动递增(每个表单独)。 uid
是FK,但这无关紧要。我需要结果集包含最新的20或30个条目。
答案 0 :(得分:3)
没有连接的UNION将是可能的。
有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/union.html。
答案 1 :(得分:0)
由于这些表没有关系,加入它们没有任何意义,对吧?
据我了解,您希望按照创建日期在一个结果集中订购源自3个不同表的记录。有两种方法可以实现这一目标:
对所有3个表使用可排序且唯一的PK。我知道你可以在PostgreSQL中轻松完成这项工作。在MySQL中您需要一个解决方法:使用自动增量PK创建第4个表,并将其他3个表PK更改为指向第4个表PK的FK。这有点麻烦,您需要注意这样一个事实:自动增量字段不是可靠排序属性的良好候选(删除记录会导致序列中的间隙,以后可能会填充)。
为3个表中的每个表添加一列created
并存储每个记录的创建日期。然后可以按此列对UNION进行排序。您已经有一列date
。你不能用这个栏吗?