gpt4 book ai didi

MySQL:如何从多行中选择一个首选值(并回退到默认值)?

转载 作者:行者123 更新时间:2023-11-29 03:45:23 25 4
gpt4 key购买 nike

我有以下查询,它返回附加到 IN 子句中指定的产品 ID 的组 ID 列表。

SELECT t1.product_id, t2.group_id  
FROM table_1 t1
LEFT JOIN table_2 t2
ON t1.product_id = t2.product_id
WHERE t1.product_id IN(1,2,3,4,5)
AND t2.group_id = -1
OR t2.group_id = 2

返回的是这样的:

+------------+----------+
| product_id | group_id |
+------------+----------+
| 1 | -1 |
| 1 | 2 |
| 2 | -1 |
| 3 | -1 |
| 4 | -1 |
| 5 | -1 |
+------------+----------+

group_id 的默认值始终为 -1,但在某些情况下可能有多个值(例如,product_id '1' 的 group_id 为 '-1' 和 '2')。我想要做的是在有替代方案时忽略“-1”值,所以我最终得到这个:

+------------+----------+
| product_id | group_id |
+------------+----------+
| 1 | 2 |
| 2 | -1 |
| 3 | -1 |
| 4 | -1 |
| 5 | -1 |
+------------+----------+

我已经尝试在 product_id 上使用 GROUP BY 语句,但我最终在 group_id 列中得到了 -1 值。

请有人给我一些关于我如何能够做到这一点的指示!

最佳答案

SELECT t1.product_id, COALESCE(MAX(t2.group_id ),-1) AS group_id -- if there is no group id default to -1
FROM table_1 t1
LEFT JOIN table_2 t2
ON t1.product_id = t2.product_id
WHERE t1.product_id IN(1,2,3,4,5)
AND t2.group_id IN (-1, 2)
GROUP BY t1.product_id

关于MySQL:如何从多行中选择一个首选值(并回退到默认值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6546916/

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