表结构:表College CollegeID,CollegeName表Major MajorID,MajorName,CollegeID表Class ClassID,ClassName,MajorID表 StudentInfo ClassID ……(其余省略)现在要根据CollegeID来删除对应的 College,Major,Class,StudentInfo我写的SQLdelete from StudentInfo from StudentInfo
inner join Class on Class.ClassID=StudentInfo.ClassID
inner join Major on Major.MajorID=Class.MajorID
where Major.CollegeID=?
放心不下 想研究下这句SQL的逻辑执行顺序
各种百度 gg
http://blog.csdn.net/feixianxxx/archive/2009/10/18/4694354.aspx里面说到 它做的就是要将FROM最前面2表进行CROSS JOIN(因为可能多表)那我想问我这句SQL一开始时候是哪两个表先cross join?这句SQL的执行顺序是怎样的?
inner join Class on Class.ClassID=StudentInfo.ClassID
inner join Major on Major.MajorID=Class.MajorID
where Major.CollegeID=?
放心不下 想研究下这句SQL的逻辑执行顺序
各种百度 gg
http://blog.csdn.net/feixianxxx/archive/2009/10/18/4694354.aspx里面说到 它做的就是要将FROM最前面2表进行CROSS JOIN(因为可能多表)那我想问我这句SQL一开始时候是哪两个表先cross join?这句SQL的执行顺序是怎样的?
--StudentInfo,Class 先join啊,按照你join的顺序依次执行
where StudentInfo.ClassID
in (select classid from Class A,major B where A.classid = B.majorid and B.major.collegeid?)
更加不懂了 = =
option(force order)
如果你想要按自己的顺序join可以加上 option (force order) 但一般不建议使用。
子查询效率和join效率啊有大差别?
对这个语句而言,谁先连接谁后连接你根本用不着去管它,那是DBMS的事情,我们没必要什么都搞得清清楚楚.
select 1 from Class
inner join Major on Major.MajorID=Class.MajorID
where Class.ClassID=StudentInfo.ClassID and Major.CollegeID=?)
[邹建][深入浅出SQL Server 2005 开发,管理与应用实例]<Page100>