日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

order by case when

發布時間:2024/4/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 order by case when 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?http://topic.csdn.net/t/20040127/18/2682980.html

語法
[ ? ORDER ? BY ? { ? order_by_expression ? [ ? ASC ? | ? DESC ? ] ? } ? ? ? ? [ ? ,...n ? ] ? ]

參數
order_by_expression

指定要排序的列。可以將排序列指定為列名或列的別名(可由表名或視圖名限定)和表達式,或者指定為代表選擇列表內的名稱、別名或表達式的位置的負整數。 ?

可指定多個排序列。ORDER ? BY ? 子句中的排序列序列定義排序結果集的結構。

ORDER ? BY ? 子句可包括未出現在此選擇列表中的項目。然而,如果指定 ? SELECT ? DISTINCT,或者如果 ? SELECT ? 語句包含 ? UNION ? 運算符,則排序列必定出現在選擇列表中。

此外,當 ? SELECT ? 語句包含 ? UNION ? 運算符時,列名或列的別名必須是在第一選擇列表內指定的列名或列的別名。


說明 ? ? 在 ? ORDER ? BY ? 子句中不能使用 ? ntext、text ? 和 ? image ? 列。


ASC

指定按遞增順序,從最低值到最高值對指定列中的值進行排序。

DESC

指定按遞減順序,從最高值到最低值對指定列中的值進行排序。

空值被視為最低的可能值。

對 ? ORDER ? BY ? 子句中的項目數沒有限制。然而,對于排序操作所需的中間級工作表的大小有 ? 8,060 ? 字節的限制。這限制了在 ? ORDER ? BY ? 子句中指定的列的合計大小。

===

大家還是沒有明白我的意思,還是舉例說明吧
有這樣一個表tt(bmid ? int,boardid ? int,parentid ? int)
如果用select ? * ? from ? tt;結果集如下:
bmid ? ? ? ? ? ? ? ? boardid ? ? ? ? ? parentid ? ? ? ?
----------- ? ----------- ? ----------- ?
1 ? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? ? ? 9
2 ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? 17
5 ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ? ? ? ? 18
9 ? ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
15 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
16 ? ? ? ? ? ? ? ? ? ? 4 ? ? ? ? ? ? ? ? ? ? ? 17
17 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
18 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
5 ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ? ? ? ? 18

(所影響的行數為 ? 9 ? 行)
而用select ? * ? from ? tt ? order ? by ? (case ? when ? parentid=0 ? then ? bmid ? else ? parentid ? end),parentid,bmid,boardid;結果集如下:
bmid ? ? ? ? ? ? ? ? boardid ? ? ? ? ? parentid ? ? ? ?
----------- ? ----------- ? ----------- ?
9 ? ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
1 ? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? ? ? 9
15 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
17 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
2 ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? 17
16 ? ? ? ? ? ? ? ? ? ? 4 ? ? ? ? ? ? ? ? ? ? ? 17
18 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
5 ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ? ? ? ? 18
5 ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ? ? ? ? 18

(所影響的行數為 ? 9 ? 行)
我不明白的是第二種情況為什么不是以下這種情況呢?
bmid ? ? ? ? ? ? ? ? boardid ? ? ? ? ? parentid ? ? ? ?
----------- ? ----------- ? ----------- ?
9 ? ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
15 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
17 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
18 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
1 ? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? ? ? 9
2 ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? 17
16 ? ? ? ? ? ? ? ? ? ? 4 ? ? ? ? ? ? ? ? ? ? ? 17
5 ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ? ? ? ? 18
5 ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ? ? ? ? 18

(所影響的行數為 ? 9 ? 行)

========

create ? table ? tt
(
bmid ? int,
boardid ? int,
parentid ? int
)

insert ? into ? tt ? values(1, ? 1, ? 9)
insert ? into ? tt ? values(2, ? 2, ? 17)
insert ? into ? tt ? values(5, ? 3, ? 18)
insert ? into ? tt ? values(9, ? 0, ? 0)
insert ? into ? tt ? values(15, ? 0, ? 0)
insert ? into ? tt ? values(16, ? 4, ? 17)
insert ? into ? tt ? values(17, ? 0, ? 0)
insert ? into ? tt ? values(18, ? 0, ? 0)
insert ? into ? tt ? values(5, ? 3, ? 18)
go

--你的方法
select ? * ? from ? tt ? order ? by ? (case ? when ? parentid=0 ? then ? bmid ? else ? parentid ? end),parentid,bmid,boardid;

--等效的方法
select ? (case ? when ? parentid=0 ? then ? bmid ? else ? parentid ? end) ? as ? myid, ? * ?
from ? tt
order ? by ? myid,parentid,bmid,boardid

--結果必然是
myid ? ? ? ? ? ? ? ? bmid ? ? ? ? ? ? ? ? boardid ? ? ? ? ? parentid ? ? ? ?
----------- ? ----------- ? ----------- ? ----------- ?
9 ? ? ? ? ? ? ? ? ? ? ? 9 ? ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
9 ? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? ? ? 1 ? ? ? ? ? ? ? ? ? ? ? 9
15 ? ? ? ? ? ? ? ? ? ? 15 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
17 ? ? ? ? ? ? ? ? ? ? 17 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
17 ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? 2 ? ? ? ? ? ? ? ? ? ? ? 17
17 ? ? ? ? ? ? ? ? ? ? 16 ? ? ? ? ? ? ? ? ? ? 4 ? ? ? ? ? ? ? ? ? ? ? 17
18 ? ? ? ? ? ? ? ? ? ? 18 ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? 0
18 ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ? ? ? ? 18
18 ? ? ? ? ? ? ? ? ? ? 5 ? ? ? ? ? ? ? ? ? ? ? 3 ? ? ? ? ? ? ? ? ? ? ? 18

總結

以上是生活随笔為你收集整理的order by case when的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。