【发布时间】:2018-04-03 16:33:56
【问题描述】:
我有一个包含 2 个表的关系数据库,比如说 paintings 和 colors。它们通过数据透视表color_painting处于多对多关系。
“绘画”表:
id name
---------------------
1 Lion and cubs
2 Sunset in Ontario
“颜色”表:
id color
---------------------
1 grey
2 yellow
3 orange
“color_painting”表:
painting_id color_id
---------------------
1 1
1 2
2 1
2 2
2 3
因此,绘画与颜色的关联如下:
“Lion and cubs”链接到颜色“grey”和“yellow”
“Sunset in Ontario”链接到“grey”、“yellow”和“orange”
如何编写一个 SQL 查询来选择其中只有特定颜色而没有其他颜色的画作?
例如我想要只有“灰色”和“黄色”的画作。因此,查询应该返回“Lion and cubs”绘画而不是“Sunset”,因为“Sunset”也有“orange”。
是否可以使用一个查询? (SQL 应该在 MySQL、SQLite、PostgreSQL 和 SQL Server 方言上运行)。
【问题讨论】:
-
从 MySQL、SQL Server & Postgresql、sqlite 中任选其一。
-
你真的在使用所有这些产品吗?`
-
向我们展示您当前的查询尝试。还有预期的结果(具有已经指定的表数据。)
-
我正在编写一个允许可替换存储引擎的框架。
标签: mysql sql sql-server postgresql sqlite