从左连接SQL中选择时的COUNT(*)语法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从左连接SQL中选择时的COUNT(*)语法相关的知识,希望对你有一定的参考价值。

我有一个LEFT JOIN查询

SELECT 
    a.id_user,b.id_post, COUNT(a.*) as total_users
FROM 
    posts as b
LEFT JOIN .....
LEFT JOIN .....
WHERE ....
ORDER BY .....
GROUP BY 
    a._id_user
LIMIT 3,10

如果我使用COUNT(a.*) AS total_users来检索用户数量,但是我收到了错误;什么是正确的语法?

答案

语法看起来应该更像:

SELECT a.?, COUNT(b.?) as total_users
FROM a LEFT JOIN
     b
     ON . . .
GROUP BY a.?
另一答案

你需要一个小组

选择a.id_user,b.id_post,来自......组的count(1)由a.id_user,b.id_post

另一答案

你可以Count([some specific field])Count(*),但正如戈登林诺夫正确地说,你通常不能使用Count(alias.*)

Count()函数需要一个表达式(单个值)。对于表达式不为NULL的每一行,将计算该行。 Count(*)是返回结果集中行数的特殊情况。

另一答案

以下返回所有帖子并计算以某种方式加入这些帖子的用户数量(在您的问题中没有关于此的信息)

SELECT 
    a.id_user,
    b.id_post,
    COUNT(DISTINCT a.id_user) as total_users

以上是关于从左连接SQL中选择时的COUNT(*)语法的主要内容,如果未能解决你的问题,请参考以下文章

JOIN列在两个表中具有相同名称时的T-SQL语法缩写?

使用 COUNT() 左连接的 SQL

组合查询时的 SQL-server 语法错误(传递查询)

编写查询时的 SQL 语法错误

07002 [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

SQL从左表中获取左连接值