gpt4 book ai didi

sql-server - MSSQL 选择 "vertical"-where

转载 作者:行者123 更新时间:2023-12-03 11:26:34 25 4
gpt4 key购买 nike

除了“vertical where”,我真的不知道怎么解释。

想象下表:

TAGID|PRODUCTID|SHOP_ID
59 |3418-7 |38
61 |3418-7 |38
60 |4227-4 |38
61 |4227-4 |38

现在我想返回所有与标签 ID 相关的产品 ID:59,61。换句话说,两个标签 ID 都存在行的产品 ID 值。

所以我想返回 3418-7,而不是 4227-4

如何在 SQL 语句中尽可能简单地编写它?

这是我到目前为止的工作声明,但我觉得这可以用更聪明的方式完成:

SELECT 
productid
FROM shop_tag_relations
WHERE
productid IN (select productid from shop_tag_relations WHERE tagid=59)
AND
productid IN (select productid from shop_tag_relations WHERE tagid=61)
GROUP BY productid,shop_id

最佳答案

SELECT PRODUCTID
FROM T
WHERE TAGID IN (59,61)
GROUP BY PRODUCTID
HAVING COUNT(DISTINCT TAGID) = 2

或者

SELECT PRODUCTID
FROM T
WHERE TAGID = 59
INTERSECT
SELECT PRODUCTID
FROM T
WHERE TAGID = 61

关于sql-server - MSSQL 选择 "vertical"-where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9276985/

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