gpt4 book ai didi

mysql - 在 WHERE 子句中使用 != 时 SELECT 不起作用(使用 GROUP BY 和 HAVING COUNT)

转载 作者:行者123 更新时间:2023-11-29 04:41:02 24 4
gpt4 key购买 nike

这个问题是基于:Select row from left join table where multiple conditions are true

我现在正尝试从表 1 中选择行,这些行在表 2 中与某个属性 ID 没有关联。

这些是表格:

表一

| ID  |   Name    |
| 1 | test |
| 2 | hello |

表2

| ID  | PropertyID |
| 1 | 3 |
| 1 | 6 |
| 1 | 7 |
| 2 | 6 |
| 2 | 1 |

我正在使用以下查询(使用“=”):

SELECT tab1ID
FROM table2
WHERE propertyID != 3 OR propertyID = 6
GROUP BY tab1ID
HAVING COUNT(*) = 2;

此查询应返回 ID=2,但它返回零行。我做错了什么?

非常感谢任何帮助!

编辑:我已经给出了 MWE,但这是我的实际查询:

SELECT transactionline.total FROM transactionline
LEFT JOIN product_variant ON product_variant.SKU = transactionline.SKU
LEFT JOIN product ON product_variant.productID = product.productID
LEFT JOIN connect_option_product ON connect_option_product.productID = product.productID
LEFT JOIN productattribute_option ON productattribute_option.optionID = connect_option_product.optionID
WHERE productattribute_option.optionID = 4 OR productattribute_option.optionID = 9
GROUP BY transactionline.lineID
HAVING COUNT(*) = 1
AND SUM(productattribute_option.optionID = 4) = 0
AND SUM(productattribute_option.optionID = 9) > 0

一个产品可以与 optionID 有多个连接。此查询的目标是选择某些过滤器为真或假的总金额。

最佳答案

您的分组是正确的。但是你需要计算你不想要的值在你的组中有多少次。该计数必须为零。

SELECT tab1ID
FROM table2
GROUP BY tab1ID
HAVING sum(propertyID = 6) > 0
AND sum(propertyID = 3) = 0

关于mysql - 在 WHERE 子句中使用 != 时 SELECT 不起作用(使用 GROUP BY 和 HAVING COUNT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28407753/

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