mysql-使用带join的组

0kjbasz6  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(264)

所以这个语句一开始没有连接,它只是简单地查找产品表并按项目代码对结果进行分组。

  1. SELECT a.item_code,
  2. a.price,
  3. b.v_no
  4. FROM product a
  5. JOIN variation b ON a.item_code = b.item_code
  6. WHERE a.price>=2
  7. GROUP BY a.item_code

现在我已经添加了join,我想按v\u no分组,但前提是数据v\u no存在。这是因为 product 表中有相应的条目 variation table。所以分组依据 item_code 对于“正常”产品,但分组 v_no 那么 item_code 如果 v_no 存在。
以下操作无效:

  1. SELECT a.item_code,
  2. a.price,
  3. b.v_no
  4. FROM product a
  5. JOIN variation b ON a.item_code = b.item_code
  6. WHERE a.price>=2
  7. GROUP BY b.v_no,
  8. a.item_code

这个 item_code 分组仍然存在,但 v_no 分组被忽略。

8iwquhpp

8iwquhpp1#

为了考虑所有产品(有/无变化),您需要更改为 LEFT JOIN .
对于条件分组方式,可以使用 Coalesce() 功能;它将考虑分组时的第一个非空值。
请尝试以下操作:

  1. SELECT a.item_code,
  2. a.price,
  3. b.v_no
  4. FROM product a
  5. LEFT JOIN variation b
  6. ON a.item_code = b.item_code
  7. WHERE a.price >= 2
  8. GROUP BY COALESCE(b.v_no, a.item_code)

相关问题