首页 新闻 搜索 专区 学院

一段貌似有问题的sql文,却能编译通过且查询出结果

0
悬赏园豆:15 [已关闭问题]

如下一段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关联)这样的写法吗?如果有的话,请不妨再举一例给我看看。谢谢!

太平洋在望的主页 太平洋在望 | 初学一级 | 园豆:155
提问于:2009-05-29 11:23
< >
分享
其他回答(4)
1

可以这样写的

双月惊飞鸟 | 园豆:0 (初学一级) | 2009-05-29 12:43
0

FROM table1, table2

我记得是在 ANSI SQL 1992的标准里面的,不过从 ANSI SQL 1999标准出来后就不推荐这么写的,直接用INNER JOIN可以让代码更清晰,当然,对数据库引擎来说他们是一样的。

Azuresong | 园豆:3565 (老鸟四级) | 2009-05-29 13:06
0

在ORACLE中可以用WHERE关联

如:

select dname,ename,sal from emp,dept

where dept.deptno = emp.deptno and emp.deptno=10(dept.deptno=10);

 

ゞ儍Dě溡尚 | 园豆:210 (菜鸟二级) | 2009-05-29 18:24
0

当然可以啊,我在sql 2000 里面都是这个样子的,但是在 2005 里面,如果用左或者右关联就行不同了,要用下面的方法了

陳修君 | 园豆:480 (菜鸟二级) | 2009-05-29 21:22
0

不同SQL标准的不同写法。目前不推荐在WHERE中关联。

周强 | 园豆:266 (菜鸟二级) | 2009-05-30 00:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册