首页 新闻 赞助 找找看

关于 sql 中 order by 的问题

0
悬赏园豆:10 [已解决问题] 解决于 2018-06-26 09:48

举个例子:select * from table order by ‘字段名’desc

请注意:这个字段名的外围加了引号,排序失效,大家可以试一下

想知道这个语句是怎么被 解析器解析的?这个带了引号的字段被解析成了什么?

乔砂的主页 乔砂 | 初学一级 | 园豆:142
提问于:2018-06-22 15:34
< >
分享
最佳答案
0

order by 你的字段名 ,你加了‘’  这个时候能在表中找到你加‘’的字段名吗

收获园豆:9
雷。 | 小虾三级 |园豆:775 | 2018-06-22 16:13

说的对,但是他为什么不报“找不到xx字段”的错。

所以,我的疑惑是:它解析的原理  或者    他是解析成了什么才没有报错

乔砂 | 园豆:142 (初学一级) | 2018-06-22 16:16

@竜咚咚: 兄弟,你这个发现我都要哭了。

我没说过报错,我说的是排序失效

乔砂 | 园豆:142 (初学一级) | 2018-06-22 18:19

@竜咚咚: 兄弟,你该不会是 asc 吧,你用 desc 试试。

乔砂 | 园豆:142 (初学一级) | 2018-06-22 18:24

@扬撒: 我就是用的desc

雷。 | 园豆:775 (小虾三级) | 2018-06-22 18:25

@竜咚咚: 贴下语句,麻烦了。

乔砂 | 园豆:142 (初学一级) | 2018-06-22 18:26

@扬撒:  就是这样

雷。 | 园豆:775 (小虾三级) | 2018-06-22 18:29

@扬撒: 没有说排序失效啊

雷。 | 园豆:775 (小虾三级) | 2018-06-22 18:30

@竜咚咚: 难道是客户端的问题,我用的navicat,你用的是?

乔砂 | 园豆:142 (初学一级) | 2018-06-22 18:31

@扬撒: sql server management studio 

雷。 | 园豆:775 (小虾三级) | 2018-06-26 09:46
其他回答(4)
0

加了引号不就是字符串了吗,order by 字段你写了个字符串肯定没用

_legends | 园豆:509 (小虾三级) | 2018-06-22 15:49
0

order by 字段
你加引号就是字符串了, sql执行的时候排序不把这个字符串当作表的字段处理, 自然就无效了,

、熙和 | 园豆:1508 (小虾三级) | 2018-06-22 16:32

举个例子:select * from table order by ‘字段名’desc(排序失效)

select * from table order by 不存在的字段名 desc(会报错)

我想知道的是,为什么加了引号不报错,而仅仅是失效

支持(0) 反对(0) 乔砂 | 园豆:142 (初学一级) | 2018-06-22 18:22
0

你可以在要排序的字段后面写上一个+0 看看行不

收获园豆:1
思念断了线 | 园豆:263 (菜鸟二级) | 2018-06-22 16:35
1

加引号就变成字符串,相当于常量列了,效果如下:

SELECT TOP 1000 [Cid], [Cname], 'cid' TMP
FROM [CommissionInfo]
ORDER BY TMP desc
山中草 | 园豆:204 (菜鸟二级) | 2018-06-26 11:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册