mysql中关于左连接,取出来的数据顺序和主表不一样

问题描述

mysql中关于左连接,取出来的数据顺序和主表不一样

如题,楼主最近在跟着视频学习SQL语句,发送自己做出来的效果和老师不一样 如图
这时两张表,学生表和班级表
要求是查询班级一样的学生信息,查出左连接显示是这样的:
右连接显示这样
请问一下为什么左连接查询出来显示数据的顺序不是按照学生表的顺序来啊?学生表不是主表么?为什么我显示出来的itcast顺序完全乱了,而是按照后面右表的id顺序来排? 求求求,急求大神解疑

解决方案

这个结果就是这样的。因为你的左连接写的是pr_student表左连接pr_class表,那么pr_class 表必然在左边,那么排序也就按着pr_class这个表的id来排序
同理,右连接也是如此。如何排序主要看你写两个表的位置:A left join B 排序是BA

解决方案二:

我不是大神,我也没用过MySQL, 用过Oracle而已,还是基础。想问楼主的是,这个时候 如果删除prclass 表的数据 是不是会出错。
我的理解是 prstudent表的数据是参照class表的的数据的,所以会出现这样的情况。还请大神前来指教。谢谢

解决方案三:

个人感觉这排序应该是跟数据库的查询顺序有关系吧,再说顺序可以排啊

解决方案四:

如果想按指定的字段来排序,应该加ORDER BY吧?

时间: 2024-11-08 19:24:34

mysql中关于左连接,取出来的数据顺序和主表不一样的相关文章

sql server-SQL server 中的左连接问题

问题描述 SQL server 中的左连接问题 select * from student,course where student.sid=course.sid(+);为什么实现不了左连接 解决方案 你用的什么数据库,如果SQL Server不支持(+) 用Left Join select * from student LEFT JOIN course ON student.sid=course.sid`

数据库中的左连接和右连接的区别

今天,别人问我一个问题:数据库中的左连接和右连接有什么区别?如果有A,B两张表,A表有3条数据,B表有4条数据,通过左连接和右连接,查询出的数据条数最少是多少条?最多是多少条? 我被这个问题问住了,后来我去问了数据库开发人员,结果结果各种各样: a 最大12  最小0 b 最大12  最小未知 c 最大未知 最小为3 d 最大12   最小为3 e 不清楚 1.说明 (1)左连接:只要左边表中有记录,数据就能检索出来,而右边有 的记录必要在左边表中有的记录才能被检索出来 (2)右连接:右连接是只

MySQL left join 左连接详解介绍

表a 1 aid adate   2 1 a1   3 2 a2   4 3 a3 表b 1 bid bdate   2 1 b1   3 2 b2   4 4 b4 1  代码如下 复制代码 select * from a left join b on a.aid = b.bid 首先取出a表中所有数据,然后再加上与a.b匹配的的数据. 此时的取出的是: 1 1 a1 b1   2 2 a2 b2   3 3 a3 空字符 同样的也有right join 指的是首先取出b表中所有数据,然后再加

数据库中的左连接(left join)和右连接(right join)区别_数据库其它

Left Join / Right Join /inner join相关 关于左连接和右连接总结性的一句话: 左连接 where只影向右表,右连接where只影响左表. Left Join select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID 左连接后的检索结果是显示tbl1的所有数据和tbl2 中满足where 条件的数据. 简言之 Left Join影响到的是右边的表 Right Join select * from tbl1 R

mysql left join 左连接查询关联n多张表

left join 左连接即以左表为基准,显示坐标所有的行,右表与左表关联的数据会显示,不关联的则不显示.关键字为left join on. **基本用法如下:  select table a left join table b on a.id = b.ta_id** 注意:️其中on后面关联的字段应该是同一字段(两表关联的外键) ️由于以左表为基准,左表一条记录如果对应右表多条记录,那查出的数据中右表的数据也只显示一条,如果要都显示,可以用group_contact()将字段用逗号隔开显示在一

数据库中的左连接(left join)和右连接(right join)区别

Left Join / Right Join /inner join相关 关于左连接和右连接总结性的一句话: 左连接where只影向右表,右连接where只影响左表. Left Join select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID 左连接后的检索结果是显示tbl1的所有数据和tbl2中满足where 条件的数据. 简言之 Left Join影响到的是右边的表 Right Join select * from tbl1 Rig

mysql中concat()字符串连接函数用法

CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL.  例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) Mysql查询日期和时间:  代码如下 复制代码 mysql> select concat(CURDATE() , ' ' ,CURTIME()); +------------------------------------+ | concat(CURDATE() ,

MySQL中的反连接(r12笔记第45天)

  关于Oracle的半连接,反连接,我一直认为这是一个能讲很长时间的话题,所以在我的新书<Oracle DBA工作笔记>中讲性能优化的时候,我花了不少的笔墨做了阐述,结果在做MySQL性能优化的时候,优化思路切换到MySQL层面,我发现要说的东西要更多.总体来看,这部分的优化细节MySQL还在路上,不同的版本中都能够一窥其中的变化,可以看到在不断改进.    在表的连接上,半连接,反连接本身很平常,但是统计信息的不够丰富导致执行计划的评估中可能会出现较大差别,会很可能把半连接,反连接的实现方

怎么用hibernate把mysql中的blob型取出来显示在页面上?

问题描述 Queryquery=session.createQuery("fromLipinasawherea.bianhao="+bianhao);list=query.list();执行完这句我应该已经将数据库中的图片数据得到了吧?if(list==null){System.out.println("ok");}for(inti=0;i<list.size();i++){Lipinlipin=(Lipin)list.get(i);lipin.getPict