首页 新闻 会员 周边

mysql的where子句中含有中文,查不出结果

0
[待解决问题]

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子句中查询不出正确的结果,可是我又想用中文别名,应该怎么解决呢?求大佬解答一下,谢谢!

小锅牛的主页 小锅牛 | 初学一级 | 园豆:189
提问于:2020-04-30 22:01
< >
分享
所有回答(3)
0

建立连接时,设置字符集?

星空下w | 园豆:215 (菜鸟二级) | 2020-05-01 08:12

没用,二楼帮我解答了

支持(0) 反对(0) 小锅牛 | 园豆:189 (初学一级) | 2020-05-02 11:34
0

你应该是对别名定义有误解吧。
你上面的sql中,别名分为两类:
一类是表的别名,比如FROM student s,s就是student的别名;
一类是查询结果中,对字段起别名,比如s.id as '学号',学号就是s.id的别名;
第二类别名,是建立在第一类别名的基础上的;
而where中,只能使用表的别名+属性名(比如where s.id=1),而不能使用学号=1。

寻觅beyond | 园豆:923 (小虾三级) | 2020-05-01 14:27

我是个菜鸟,现在已经解决了,谢谢你!

支持(0) 反对(0) 小锅牛 | 园豆:189 (初学一级) | 2020-05-02 11:33
0

其实这属于mysql执行顺序先后的问题
一般执行顺序为:
from>where>group by>having>select>order by>limit
你的"学号"别名是在select时起的别名,在where执行时,还没有执行select

ASKANDANSWERS | 园豆:220 (菜鸟二级) | 2020-05-05 10:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册