视图中的order by,在SELECT中,如果有distinct就不起作用了,怎么回事?

ttt 2004-04-20 09:40:31
CREATE VIEW dbo.VW_test1
AS
SELECT top 100 * from table1
ORDER BY ID desc

select * from vw_test1 这时SELECT出来的是按顺排的

但:select distinct name from vw_test1 这句就不按顺排了,怎么回事?
如果想要按顺排的结果,该怎么办呢?我的目的是想搜索出不重复的Name,按它们所对应的ID的顺序排.

如果:select distinct name from vw_test1 order by ID,报错:
如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。
...全文
238 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
laughsmile 2004-04-20
  • 打赏
  • 举报
回复
CREATE VIEW dbo.VW_test1
AS
SELECT top 100 name,name+ID AS ID from table1
ORDER BY ID desc
然后
select distinct name from vw_test1
xzzq007 2004-04-20
  • 打赏
  • 举报
回复
先查看是否有多个ID,如果有建议在加一个条件如ORDER BY ID desc,age desc
zjcxc 元老 2004-04-20
  • 打赏
  • 举报
回复
同意楼上,那样是排序不了的.
cywarson 2004-04-20
  • 打赏
  • 举报
回复
同意楼上的做法.

如果是按最大的id 排序可以如下做法:

select max(name) as name,max(id) as id from vw_test1 group by name order by desc

试试...
Rewiah 2004-04-20
  • 打赏
  • 举报
回复
就因为一个name 有多个id,sql server不知道按哪个id排序,才排不了序
Rewiah 2004-04-20
  • 打赏
  • 举报
回复
select name from vw_test1 group by name order by min(id)


select distinct name from vw_test1
相当于:
select distinct name from (SELECT top 100 * from table1
ORDER BY ID desc
) as v
当然不排序
ttt 2004-04-20
  • 打赏
  • 举报
回复
to klan(因帅被判7年) :
这样当然是没有语法错误,但不能满足要求
这样SELECT出来的是 name和id不重复的值,不是name的
klan 2004-04-20
  • 打赏
  • 举报
回复
你这样写试试看吧

select distinct name,ID from vw_test1 order by ID
klan 2004-04-20
  • 打赏
  • 举报
回复
对阿,你只能order by name
Rewiah 2004-04-20
  • 打赏
  • 举报
回复
少改了一个字,第二个“按最小的id排序”应该改为“按最大的id排序”
Rewiah 2004-04-20
  • 打赏
  • 举报
回复
CREATE VIEW dbo.VW_test1
AS
SELECT top 100 * from table1
ORDER BY ID desc
go

不变

select name from vw_test1 group by name order by max(id) desc

>>就因为一个name 有多个id,sql server不知道按哪个id排序,才排不了序

实际上人也派不了序,除非人先定一个规则,比如,按最小的id排序(上午回答的做法,搂主你试过没有,如果没试是不是有点浪费你我和大家的时间?),按最小的id排序(这次的写法,如果看了上午的应该很快能想到这个的)
这个规则不是由我或者大家定,而是由楼主定。



JerryOne 2004-04-20
  • 打赏
  • 举报
回复
一个name可能对应多个ID,当然不能以ID来排序显示name
ttt 2004-04-20
  • 打赏
  • 举报
回复
to Rewiah(乘长风) :
如果想按ID排序,取distinct name,SQL语句该如何写呢?

to laughsmile(海边的星空):
你的方法不能按正确顺序排

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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