0

我有三个表,每个表都包含一个自动递增的 PK。我需要从这些表的组合中选择最新的(即 ORDERBY DESC)条目。我想在一个查询中完成,有两个连接。我的想法是以某种方式选择一个表,按 排序id DESC,然后以某种方式合并结果。有没有人有办法(或者可能是更好的主意)这样做?

(使用 mysql) 编辑: 对不起 - 这是一个更详细的规范:我有三个表,posts, stories, favs。每个都有(至少)三列id,uiddate。他们都是PK的。id自动增量(分别为每个表)。uid是FK,但这无关紧要。我需要结果集包含最新的 20 或 30 个条目。

4

2 回答 2

3

没有连接的 UNION 将是一种可能性。

有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/union.html

于 2009-08-10T09:24:32.057 回答
0

由于这些表没有关系,加入它们没有任何意义,对吧?

据我了解,您希望按创建日期在一个结果集中对源自 3 个不同表的记录进行排序。有两种方法可以实现这一点:

  1. 对所有 3 个表使用可排序且唯一的 PK。我知道你可以在 PostgreSQL 中轻松做到这一点。在 MySQL 中,您需要一个解决方法:创建具有自动增量 PK 的第 4 个表,并将其他 3 个表 PK 更改为指向第 4 个表 PK 的 FK。这有点麻烦,您需要注意一个事实,即自动递增字段不是可靠排序属性的良好候选者(删除记录会导致序列中的间隙,稍后可能会填充)。

  2. 为 3 个表中的每一个添加一列created,并存储每条记录的创建日期。然后可以按此列对 UNION 进行排序。您已经有一个专栏date。你不能用这个专栏吗?

于 2009-08-10T11:30:10.477 回答