我想将两个查询合并为一个查询。例如我的第一个查询向我提供了一个结果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条件下获得相同查询的结果
您可以尝试在两个表之间进行内部联接:
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');
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'))
仅使用第二个查询过滤第一个表结果。