gpt4 book ai didi

SQL-Query - 查找另一个表的模式

转载 作者:行者123 更新时间:2023-12-02 22:12:08 27 4
gpt4 key购买 nike

我有一张带有颜色的表格:

COLORS

idColor Name
------- ------
4 Yellow
5 Green
6 Red

我还有另一个数据表:

PRODUCTS

idProduct idCategory idColor
--------- ---------- -------
1 1 4
2 1 5
3 1 6
4 2 10
5 2 11
6 2 12
7 3 4
8 3 5
9 3 8
10 4 4
11 4 5
12 4 6
13 5 4
14 6 4
15 6 5

当表 Colors (4, 5, 6) 中的 idColor 值出现在第二个中时,我只想从 Products 返回行table 和 IdCategory 恰好有 3 个具有相同 idColor4, 5, 6 的元素。

对于这个例子,查询应该返回:

IdCategory
----------
1
4

最佳答案

试试这个:

SELECT idCategory
FROM PRODUCTS
GROUP BY idCategory
HAVING COUNT(*) = 3
AND COUNT(DISTINCT CASE WHEN idColor IN (4,5,6) THEN idColor END) = 3

Here is a demo供您尝试。

已更新

如果你想根据表`COLOR的值动态过滤结果

SELECT idCategory
FROM PRODUCTS P
LEFT JOIN (SELECT idColor, COUNT(*) OVER() TotalColors
FROM COLORS) C
ON P.idColor = C.idColor
GROUP BY idCategory
HAVING COUNT(*) = MIN(C.TotalColors)
AND COUNT(DISTINCT C.idColor) = MIN(C.TotalColors)

Here is a fiddle用这个例子。

关于SQL-Query - 查找另一个表的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15098275/

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