如下一段sql文:(T_ORDER为主表,T_ORDER_COLOR为子表)
select
T_ORDER.id ,
count(distinct T_ORDER_COLOR.colorcode) as colorcount
from
T_ORDER,T_ORDER_COLOR
where T_ORDER_COLOR.oid=T_ORDER.id
group by T_ORDER.id
猛一看,我以为这段sql文肯定有问题,哪有这种写法的。再怎么着也得写成
select
T_ORDER.id ,
count(distinct T_ORDER_COLOR.colorcode) as colorcount
from
T_ORDER
inner join
T_ORDER_COLOR
on
T_ORDER_COLOR.oid=T_ORDER.id
group by
T_ORDER.id
啊!可是没有想到,上面两种写法都能编译通过,并且查询出的结果是相同的!
我想请教下各位,有第一种(from后面跟多张表,不用join...on关联,而用where关联)这样的写法吗?如果有的话,请不妨再举一例给我看看。谢谢!
可以这样写的
FROM table1, table2
我记得是在 ANSI SQL 1992的标准里面的,不过从 ANSI SQL 1999标准出来后就不推荐这么写的,直接用INNER JOIN可以让代码更清晰,当然,对数据库引擎来说他们是一样的。
在ORACLE中可以用WHERE关联
如:
select dname,ename,sal from emp,dept
where dept.deptno = emp.deptno and emp.deptno=10(dept.deptno=10);
当然可以啊,我在sql 2000 里面都是这个样子的,但是在 2005 里面,如果用左或者右关联就行不同了,要用下面的方法了
不同SQL标准的不同写法。目前不推荐在WHERE中关联。