如何在相同质素的条件下获得相同查询的结果

问题描述 投票:0回答:2

我想将两个查询合并为一个查询。例如我的第一个查询向我提供了一个结果ID,我将检查第二个查询中是否存在该结果ID。

查询1:-

SELECT "article_messages"."id" FROM "article_messages" WHERE (group_id in (2,3,4,5,6,7,8,9,10,11,12,14,17) AND load_time <= 10 AND (start_time <= '2020-05-21 07:29:21.401068' AND end_time >= '2020-05-21 07:29:21.401103'))

查询2:-

SELECT COUNT(*) FROM "messages" WHERE (article_message_id = 7);

有任何解决方案,我尝试使用内部联接,但由于本文消息ID再次卡住,如何在其where条件下获得相同查询的结果

postgresql psql postgresql-9.3 postgresql-9.2
2个回答
0
投票

您可以尝试在两个表之间进行内部联接:

SELECT COUNT(*) AS cnt
FROM messages m
INNER JOIN article_messages am
    ON m.article_message_id = am.id
WHERE
    am.group_id IN (2,3,4,5,6,7,8,9,10,11,12,14,17) AND
    am.load_time <= 10 AND
    (am.start_time <= '2020-05-21 07:29:21.401068' AND
     am.end_time >= '2020-05-21 07:29:21.401103');

0
投票
SELECT COUNT(*) FROM "messages" 
WHERE article_message_id in 
    (SELECT "article_messages"."id" FROM "article_messages" WHERE (group_id in (2,3,4,5,6,7,8,9,10,11,12,14,17) AND load_time <= 10 AND (start_time <= '2020-05-21 07:29:21.401068' AND end_time >= '2020-05-21 07:29:21.401103'))

仅使用第二个查询过滤第一个表结果。

© www.soinside.com 2019 - 2024. All rights reserved.