首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PostgreSQL中连接2个不同表上的2个select查询

问在PostgreSQL中连接2个不同表上的2个select查询
EN

Stack Overflow用户
提问于 2013-05-21 00:18:09
回答 2查看 23.8K关注 0票数 13

我在2个不同的表上有两个独立的查询,我正试图将它们连接到一个查询中。这两个表位于相同的架构中。

我正在尝试形成一个查询,它将返回论坛中最新帖子的forumid,threadid和主题。我可以使用我在下面写的两个查询,但为了提高效率,如果可能的话,我更喜欢只使用一个。

以下是我的问题:

代码语言:javascript
复制
1>
SELECT forumid,threadid
FROM threadtable
WHERE modifieddate = (select max(modifieddate) from threadtable);

2>
SELECT subject
FROM messsagetable
WHERE modifieddate = (select max(modifieddate) from messsagetable);

我已经尝试了一些解决方案,但似乎在原地踏步。如有任何建议,欢迎光临。版本是Postgres 8.1。

EN

回答 2

Stack Overflow用户

发布于 2013-05-21 00:43:39

代码语言:javascript
复制
SELECT * FROM 
   (SELECT forumid,threadid
    FROM threadtable
    WHERE modifieddate = (SELECT MAX(modifieddate) FROM threadtable)) a, 
   (SELECT subject
    FROM messsagetable
    WHERE modifieddate = (SELECT MAX(modifieddate) FROM messsagetable)) b

将第一个结果与第二个结果组合在一起。

代码语言:javascript
复制
SELECT * FROM 
   (SELECT forumid,threadid, modifieddate
    FROM threadtable
    WHERE modifieddate = (SELECT MAX(modifieddate) FROM threadtable)) a
INNER JOIN 
   (SELECT subject, modifieddate
    FROM messsagetable
    WHERE modifieddate = (SELECT MAX(modifieddate) FROM messsagetable)) b
ON a.modifieddate = b.modifieddate

将第一个中的所有结果与第二个中具有相同修改日期的所有结果合并。

由于两个查询都只返回一个结果,因此您很可能需要第一个建议。

票数 20
EN

Stack Overflow用户

发布于 2013-05-21 00:46:48

要无条件地合并结果,请使用CROSS JOIN

代码语言:javascript
复制
SELECT *
FROM  (
    SELECT forumid, threadid
    FROM   threadtable
    ORDER  BY modifieddate DESC
    LIMIT  1
    ) t
CROSS JOIN (
    SELECT subject
    FROM   messsagetable
    ORDER  BY modifieddate DESC
    LIMIT  1
    ) m

我用更快、更简单的ORDER BY / LIMIT 1修改了基本查询。如果任一表中有多个行共享最大modifieddate,则将选取任意行。

在评论后更新

然而,modifieddate字段在两个表中,对于我试图检索的条目,它将是相同的。

这是一个糟糕的设计。您需要当前版本的Postgres,并且需要重新考虑您的数据库布局。

到目前为止,上面的查询仍然执行请求的工作--一旦你得到了正确的表名。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16653828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档