我有以下查询,它返回附加到IN子句中指定的产品ID的组ID的列表。MySQL:如何从多行中选择首选值(并回退到默认值)?
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'具有'-1'和'2'的group_id)。我想要做的就是忽视了“-1”的值时,还存在另一种,所以我结束了这一点:
+------------+----------+
| product_id | group_id |
+------------+----------+
| 1 | 2 |
| 2 | -1 |
| 3 | -1 |
| 4 | -1 |
| 5 | -1 |
+------------+----------+
我用集团通过声明上的product_id,但我刚刚结束了group_id列中的-1值。
请有人可以给我一些关于我如何能够做到这一点的指针!
是否有任何理由要加入自PRODUCT_ID两个表中存在? – niktrs
如果一个产品与'group_id's,例如'2'和'3',除了'-1'有关,应该发生什么? –
不错的问题。如果最大值是两个(-1,其他数字)查询代码可以非常简单 – niktrs