因此,该语句开始时没有连接,它将仅通过item_code查找产品表并分组结果。
SELECT a.item_code,
a.price,
b.v_no
FROM product a
JOIN variation b ON a.item_code = b.item_code
WHERE a.price>=2
GROUP BY a.item_code
现在,我已添加了要按v_no分组的联接,但只有在数据v_no存在的情况下才可以。这是因为并非product
表中的每个项目在variation
表中都有对应的条目。因此,对“普通”产品按item_code
分组,但是如果存在v_no
,则按item_code
分组,然后v_no
分组。
以下内容无效:
SELECT a.item_code,
a.price,
b.v_no
FROM product a
JOIN variation b ON a.item_code = b.item_code
WHERE a.price>=2
GROUP BY b.v_no,
a.item_code
item_code
分组仍然存在,但是v_no
分组被忽略。
答案 0 :(得分:1)
LEFT JOIN
。Coalesce()
函数;它将考虑分组依据的第一个非空值。尝试以下操作:
SELECT a.item_code,
a.price,
b.v_no
FROM product a
LEFT JOIN variation b
ON a.item_code = b.item_code
WHERE a.price >= 2
GROUP BY COALESCE(b.v_no, a.item_code)