SELECT
s.sid AS 学号,
s.sname AS 姓名,
COUNT(sc.course_id
) AS 选课数,
SUM(IFNULL(sc.num
,0)) AS 总成绩
FROM
student s
LEFT JOIN
score sc
ON
'学号'=sc.student_id
GROUP BY
'学号';
在mysql查询中,如果含有‘中文’别名,在where子句中查询不出正确的结果,可是我又想用中文别名,应该怎么解决呢?求大佬解答一下,谢谢!
建立连接时,设置字符集?
没用,二楼帮我解答了
你应该是对别名定义有误解吧。
你上面的sql中,别名分为两类:
一类是表的别名,比如FROM student s,s就是student的别名;
一类是查询结果中,对字段起别名,比如s.id as '学号',学号就是s.id的别名;
第二类别名,是建立在第一类别名的基础上的;
而where中,只能使用表的别名+属性名(比如where s.id=1),而不能使用学号=1。
我是个菜鸟,现在已经解决了,谢谢你!
其实这属于mysql执行顺序先后的问题
一般执行顺序为:
from>where>group by>having>select>order by>limit
你的"学号"别名是在select时起的别名,在where执行时,还没有执行select