【发布时间】:2016-02-15 23:09:28
【问题描述】:
我写sql
SELECT
count(*) as count,g.name
FROM
test_scale g
INNER JOIN
test_user_scale_result a
INNER JOIN
en_org_user_department b
INNER JOIN
en_org_department d
INNER JOIN
test_scale_type e ON a.user_id = b.user_id
AND g.id = a.scale_id
AND b.department_id = d.id
AND d.position LIKE CONCAT((SELECT
position
FROM
en_org_department
WHERE
id = 8),
'%')
AND e.id = g.scale_type_id
and b.status = 1
and g.scale_type_id IN (1 , 9)
and a.create_time BETWEEN '2015-01-07 18:09:45' and '2015-11-09 18:09:45'
group by a.scale_id;
我运行正确。 但是当我将内部更改为左侧时,就像
SELECT
count(*) as count,g.name
FROM
test_scale g
left JOIN
test_user_scale_result a
left JOIN
en_org_user_department b
left JOIN
en_org_department d
left JOIN
test_scale_type e ON a.user_id = b.user_id
AND g.id = a.scale_id
AND b.department_id = d.id
AND d.position LIKE CONCAT((SELECT
position
FROM
en_org_department
WHERE
id = 8),
'%')
AND e.id = g.scale_type_id
and b.status = 1
and g.scale_type_id IN (1 , 9)
and a.create_time BETWEEN '2015-01-07 18:09:45' and '2015-11-09 18:09:45'
group by a.scale_id;
错误 20:37:15 SELECT * FROM test_user_scale_result a
left JOIN en_org_user_department b left JOIN
en_org_department d left JOIN test_scale_type e left 加入 test_scale g ON a.user_id = b.user_id AND g.id = a.scale_id AND b.department_id = d.id AND d.position LIKE CONCAT((选择位置从 en_org_department WHERE id = 8),
'%') AND e.id = g.scale_type_id 和 b.status = 1
和 g.scale_type_id IN (1 , 9) 和 a.create_time BETWEEN '2015-01-07 18:09:45' 和 '2015-11-09 18:09:45' 错误代码:1064。你 您的 SQL 语法有错误;检查对应的手册 您的 MySQL 服务器版本,以便在 '' 行附近使用正确的语法 26 0.0060 秒
【问题讨论】:
-
一般的 GROUP BY 规则说:如果指定了 GROUP BY 子句,则 SELECT 列表中的每个列引用必须要么标识一个分组列,要么是一个集合函数的参数。
-
顺便说一句,两个查询都有语法错误...