sql—如何按查询组的行数计算?

9lowa7mx  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(435)

我想编写一个查询来返回查询的行。
我试着这样:

// This query returns 2 rows in a result and I want to count that 2 output rows 
 // but not able to count output rows

SELECT a.*, b.* FROM TABLE_1 AS A INNER JOIN TABLE_2 AS B ON (a.id = b.id) GROUP BY b.name;

输出

id      name       occupation
     5       John       Plumber
    19      Mark       Electrician

我试着数一数“trows”下面的行:

SELECT COUNT(DISTINCT a.name) AS trows, a.*, b.* FROM TABLE_1 AS A INNER JOIN TABLE_2 AS B ON (a.id = b.id) GROUP BY b.name;

输出

trows   id      name       occupation
  7      5       John       Plumber
  4      19      Mark       Electrician

“计数(不同的名称) 作为 trows“计算查询行对我来说不起作用。
查询只返回两行,但我无法计算这两行。
欢迎提出任何意见或建议。

disho6za

disho6za1#

拆下 GROUP BY :

SELECT COUNT(DISTINCT a.name) AS trows
FROM TABLE_1 A INNER JOIN
     TABLE_2 B
     ON a.id = b.id;

唯一可能导致行数错误的方法是 a.name 永远是 NULL . 如果需要考虑到这一点,您可以调整:

SELECT COUNT(DISTINCT a.name) + MAX(a.name IS NULL) AS trows
FROM TABLE_1 A INNER JOIN
     TABLE_2 B
     ON a.id = b.id;

请注意,您的 GROUP BY 查询格式不正确,应作为语法错误被拒绝: SELECT 列与 GROUP BY . 即使是较新版本的mysql也会产生错误。

相关问题