MYSQL-通过JOIN使用GROUP

时间:2018-10-26 10:04:57

标签: mysql sql

因此,该语句开始时没有连接,它将仅通过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分组被忽略。

1 个答案:

答案 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)