可以使用子查询。尝试以下操作:
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
那不是
无效的
. 如果该计数大于零,则第一个子查询将选择具有
property_storage_group_id IS NULL
为此
product_id
. 最后,主查询排除了第二个查询返回的记录。