在前面已经说过了,在添加表、字段等名称时尽量使用反勾号括住;
但是在后面的联表查询时和一开始的情况不大一样;
的确在表和字段中都用比较好,但是下面不大一样,也就是联表取两个表中的相同值时
注意,在联表查询之前,我都给字段名和表名加上了反勾号!
1、正确情况
在两个表中的相同字段名中没有加反勾号,其它都加
-- --------------- 联表查询 join -------------------------------
-- 查询参加了考试的同学(学号,姓名,科目编号,分数)
/*思路
1.分析需求,分析查询的字段来自哪些表(连接查询)
2.确定使用哪种连接查询?7种
3.确定交叉点(这两个表中哪个数据是相同的)
4.判断的条件:学生表 studentno = 成绩表 studentno
*/
SELECT s.studentno,`studentname`,`subjectno`,`studentresult`
FROM `student` AS s
INNER JOIN `result` AS r
WHERE s.studentno = r.studentno;
结果如下:
2、 错误情况
在两个表中的相同字段名中加了反勾号
SELECT `s.studentno`,`studentname`,`subjectno`,`studentresult`
FROM `student` AS s
INNER JOIN `result` AS r
WHERE `s.studentno` = `r.studentno`;
结果如下:
警告:Unknown column ‘s.studentno’ in ‘field list’
文件列表中没有这个字段;在这它也没有提示说没有r.studentno
所以我想着试试r.studentno
可不可以。
3、错误r.studentno
结果表明在联表查询里,在拥有相同的字段时相同字段最好不要加反勾号
4、正确查询
全都不加反勾号,当然前提是我的字段名和表名不和关键字冲突,当然,冲突的名称,你可以加上反勾号,其它加不加都行;
SELECT s.studentno,studentname,subjectno,studentresult
FROM student AS s
INNER JOIN result AS r
WHERE s.studentno = r.studentno;
5、全都加反勾号(注意反勾号位置)
SELECT s.`studentno`,`studentname`,`subjectno`,`studentresult`
FROM `student` AS s
INNER JOIN `result` AS r
WHERE s.`studentno` = r.`studentno`;
在这里记得不要把别名括住
当然,查询成功的前提还是得建表正确·
因为自己学到这里的时候浪费了点时间,就想着记录一下,希望文章对大家有点点帮助,少浪费点时间~fighting