mysql - SQL count + join 抛出语法错误,但没有 count 也可以正常工作

标签 mysql sql mysql-error-1064

我在以下查询中遇到奇怪的语法错误:

SELECT COUNT (*) 
FROM a 
JOIN b ON a.id = b.a_id

但是没有 COUNT 的查询就像一个魅力:

SELECT * 
FROM a 
JOIN b ON a.id = b.a_id

添加 JOIN 规范,如 INNER、LEFT 等 - 没有帮助。

The syntax error doesn't specify exactly what's wrong, just provides certain codes: [42000][1064]

如何修复它?

编辑:

这里是:

SELECT COUNT(customers.*) 
FROM customers 
JOIN customer_behaviour ON customers.id = customer_behaviour.customer_id

删除 COUNT 使其完全有效。这真的很奇怪!

最佳答案

删除 COUNT(*) 之间的空格:

SELECT COUNT(*) FROM a JOIN b ON a.id = b.a_id 
    -- COUNT (*)

<强> DBFiddle Demo

<小时/>

编辑:

SELECT COUNT(customers.*) 
FROM customers 
JOIN customer_behaviour 
  ON customers.id = customer_behaviour.customer_id

-- should be    
SELECT COUNT(*) 
FROM customers 
JOIN customer_behaviour 
  ON customers.id = customer_behaviour.customer_id

-- or
SELECT COUNT(customers.id) 
FROM customers 
JOIN customer_behaviour 
  ON customers.id = customer_behaviour.customer_id

编辑2

Now, can I add DISTINCT to it? Seems like using COUNT (DISTINCT ...) starts throwing the error again!

只需定义列名称即可:

SELECT COUNT(DISTINCT table_name.column_name) 
FROM customers 
JOIN customer_behaviour 
  ON customers.id = customer_behaviour.customer_id

关于mysql - SQL count + join 抛出语法错误,但没有 count 也可以正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776666/

相关文章:

php - 通过php向mysql数据库插入大量数据时出现服务器错误500

mysql - 1条sql语句中的多重计数

Mysql - 选择有所有日期的房间

php - NOT NULL 的 MySQL 错误

mysql - ERROR 1064 : is there a mysql create table to insert a foreign key? 我收到语法错误

mysql - 按 "every 30 days"对 mysql 结果进行分组

python - 使用 python 从 csv 文件读取并放入具有不同字段类型的 Mysql

java - mysql 在 playframework 的子句中查询

mysql - MySQL INSERT 查询是否会乱序运行

php - 检查内部(嵌套)MySQL 查询是否返回值