我在以下查询中遇到奇怪的语法错误:
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/