mysql group by ignore or skip other null列

lp0sw83n  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(354)

我有一张table:

(id, storage_id, product_id, quantity, property_storage_group_id)


我需要最小数量,但是什么时候 prouct_id 是几个,我需要忽略 product_idproperty_storage_group_id = null .
像这样:

SELECT MIN(quantity), product_id
FROM storage_quantity
WHERE storage_id = 6 
GROUP BY product_id

但没有身份证22,身份证27。

3mpgtkmj

3mpgtkmj1#

可以使用子查询。试试这个:

SELECT MIN(s1.quantity), s1.product_id
FROM storage_quantity s1
WHERE s1.id NOT IN (SELECT s2.id
                    FROM storage_quantity s2
                    WHERE s2.product_id = s1.product_id
                      AND s2.storage_id = s1.storage_id
                      AND s2.property_storage_group_id IS NULL
                      AND (SELECT COUNT(s3.property_storage_group_id)
                         FROM storage_quantity s3
                         WHERE s3.product_id = s2.product_id
                           AND s3.storage_id = s2.storage_id
                        ) > 0
                   )
WHERE s1.storage_id = 6
GROUP BY s1.product_id

第二个子查询利用 COUNT() 函数自动忽略 NULL 值,因此它只返回 property_storage_group_id 不是的 NULL . 如果该计数大于零,则第一个子查询将选择具有 property_storage_group_id IS NULL 为了这个 product_id . 最后,主查询排除第二个查询返回的记录。

相关问题