【发布时间】:2021-08-30 14:55:41
【问题描述】:
我有一个相对复杂的问题,我想用一个查询来解决,我想知道它是否可以用一个查询来完成。
举个简单的例子,我有以下表格:
-
authors(身份证、名字、姓氏、生效日期、退休日期) -
articles(id、author_id、标题、内容) -
recipients(身份证、姓名、电子邮件) -
subscriptions(作者 ID,电子邮件)
例如订阅如下所示:
// Subscriptions table
author_id email
1 'johnsmith@gmail.com'
1 'jackymoon@gmail.com'
2 'edmonix@gmail.com'
1 'louredwood@gmail.com'
2 'louredwood@gmail.com'
3 'louredwood@gmail.com'
4 'louredwood@gmail.com'
等等……
我想返回一个电子邮件列表,其中仅当电子邮件在表中出现的次数等于第二个查询时才会返回。
query_1 = SELECT email FROM recipients
WHERE email has an entry for every author returned from query_2...
query_2 = SELECT * FROM authors
WHERE current_date BETWEEN effective_date AND retirement_date
到目前为止,我只需要进行简单的查询,因此非常感谢任何帮助。
【问题讨论】:
标签: postgresql