gpt4 book ai didi

sql - Postgres多对多映射sql查询

转载 作者:行者123 更新时间:2023-11-29 13:30:51 24 4
gpt4 key购买 nike

PostgreSQL 数据库

Table User
-----------
ID | Name

1 | John
2 | Bob
3 | Sarah


Table Photo
-------------
ID | Caption

1 | Vacation
2 | Birthday
3 | Christmas

Table Comment
--------------
ID | User ID | Photo ID| Text

1 | 1 | 1 | Mexico Looks Great
2 | 2 | 1 | Sure Does
3 | 3 | 1 | Too Hot
4 | 1 | 2 | Look at that cake
5 | 3 | 2 | No ice cream?
6 | 1 | 3 | So Happy

愿望:我想获得只有 John(1) 和 Sara(3) 评论过的所有照片。

我如何构建一个 SQL 查询来查找只有用户 #1 和用户 #3 的评论的照片,我想排除比这两个评论更多(或更少)的结果。

最佳答案

最清晰和最易读的方式是包含以下评论的照片:

User1 相交 User2 Except 任何其他用户

SQL Fiddle查询将返回:

SELECT *
FROM Photo
WHERE ID IN (
SELECT "Photo ID" FROM Comment WHERE "User ID" = 1
INTERSECT
SELECT "Photo ID" FROM Comment WHERE "User ID" = 3
EXCEPT
SELECT "Photo ID" FROM Comment WHERE "User ID" NOT IN (1, 3)
)

关于sql - Postgres多对多映射sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23922850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com