sql 排序问题

cd2001zxm 2009-10-23 09:58:19
第一句:select t1.id,t2.name from t1,t2 order by id,name.

第二句:select t1.id,t2.name from t1,t2 order by t1.id,t2.name.


问题order by 的字段,带表名和不带表名有没有区别??


有区别的话区别在哪?
...全文
64 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2009-10-23
  • 打赏
  • 举报
回复
没有区别,重复的话会报错
  • 打赏
  • 举报
回复
如果表的列不重复,除了在表结构发生变化时,需不需要改SQL,估计没别的区别
超叔csdn 2009-10-23
  • 打赏
  • 举报
回复
如果t2表中没有id字段,t1表中没有name字段。
加不加表名都无所谓。

如果是有以上的情况,则oracle无法确定id是t1表的id还是t2表的id,语法上会报错。

这个带表名和不带表名是没有任何区别的,不仅在Order by 后面,在select ,where ,group by中都建议指定表名,以免出现错误。
damo_baby 2009-10-23
  • 打赏
  • 举报
回复
1、在查询效率上也有区别,加别名后要略微快一点。
2、引用起来方便。不必使用表的命名,只需要使用别名即可
3、排序加上指定别名更多快。
4、如果表连接特别多,且各表中有相同字段,则必须使用别名。
wwwtyb 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wildwave 的回复:]
有区别
select t1.id,t2.name from t1,t2 order by t1.id,t2.name
这个按t1.id和t2.name来排序
select t1.id,t2.name from t1,t2 order by id,name
现在还是按t1.id和t2.name排序
select t2.id,t1.name from t1,t2 order by id,name
这个按t2.id,t1.name排序。就是说如果order by后面不指明表名,则按结果集中显示的字段来排序
也可以
select t2.id,t1.name from t1,t2 order by t1.id,t2.name
若指明表名,则按所指的表中的字段来排序
[/Quote]
赞成这个.........
diudiu1008 2009-10-23
  • 打赏
  • 举报
回复
如果t2表中没有id字段,t1表中没有name字段。
加不加表名都无所谓。

如果是有以上的情况,则oracle无法确定id是t1表的id还是t2表的id,语法上会报错。

这个带表名和不带表名是没有任何区别的,不仅在Order by 后面,在select ,where ,group by中都建议指定表名,以免出现错误。
小灰狼W 2009-10-23
  • 打赏
  • 举报
回复
有区别
select t1.id,t2.name from t1,t2 order by t1.id,t2.name
这个按t1.id和t2.name来排序
select t1.id,t2.name from t1,t2 order by id,name
现在还是按t1.id和t2.name排序
select t2.id,t1.name from t1,t2 order by id,name
这个按t2.id,t1.name排序。就是说如果order by后面不指明表名,则按结果集中显示的字段来排序
也可以
select t2.id,t1.name from t1,t2 order by t1.id,t2.name
若指明表名,则按所指的表中的字段来排序
liu498097420 2009-10-23
  • 打赏
  • 举报
回复
除了上面说的外,在查询效率上也有区别,加表名后要略微快一点。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧