有人能解决这个mysql语句在哪里计数的问题吗?

67up9zun  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(282)

我将两个表连接在一起,我只想列出那些行,这些行的分组行计数与表a的pieces值不匹配。

  1. table A
  2. id name pieces
  3. 1 name_1 6
  4. 2 name_2 2
  5. table B
  6. a_id
  7. 1
  8. 1
  9. 2
  10. 2

所以我想要的是获取a.piece所在的所有a.name。
像这样:

  1. SELECT a.name
  2. FROM a
  3. INNER JOIN b
  4. ON a.id = b.a_id
  5. WHERE a.pieces <> Count(*)
  6. GROUP BY id

这将导致组函数的无效使用
我也试过这个:

  1. SELECT a.name,
  2. Count(*) AS count
  3. FROM a
  4. INNER JOIN b
  5. ON a.id = b.a_id
  6. WHERE a.pieces <> count
  7. GROUP BY id

错误:未知列“count”
因此,在本例中,我只希望接收1行,如下所示:

  1. name count
  2. name_1 2

因为 name_1 中有2个分组行 table.b 而且不匹配 a.piece 是6。

gupuwyp2

gupuwyp21#

你可以用 MAX()pieces ,因为它只是一个标量值,所以不会有什么区别。这也将使查询符合 only_full_group_by 模式

  1. SELECT a.id, a.name, COUNT(*) AS count
  2. FROM a
  3. INNER JOIN b
  4. ON a.id = b.a_id
  5. GROUP BY a.id, a.name
  6. HAVING MAX(a.pieces) <> COUNT(*)
6kkfgxo0

6kkfgxo02#

您可以聚合tableb中的数据并将其与tablea联接:

  1. SELECT tablea.name
  2. FROM tablea
  3. INNER JOIN (
  4. SELECT a_id, COUNT(*) AS c
  5. FROM tableb
  6. GROUP BY a_id
  7. ) AS groupedb ON tablea.id = tableb.a_id
  8. WHERE tablea.pieces <> groupedb.c

相关问题