A. 第六十四章 sql命令 ORDER BY(二)
下面的示例按照 RowID 的反向順序對記錄進行排序:
下面兩個示例展示了在 ORDER BY 子句中指定排序列的不同方法。
下面兩個查詢是等價的;
第一種方法使用列名作為排序項,第二種方法使用列號(選擇項列表中項目的序號):
下面的示例按包含IRIS列表數據的欄位進行排序。
因為IRIS列表是一個以格式化字元開始的編碼字元串,所以本例使用 $LISTTOSTRING 來按實際欄位數據值排序,而不是按列表元素編碼:
動態SQL可以使用輸入參數為 ORDER BY 子句提供文字值;
它不能使用輸入參數來提供欄位名、欄位別名、欄位號或排序關鍵字。
下面的動態SQL示例使用輸入參數按名字對結果集記錄進行排序:
以下基於游標的嵌入式SQL示例執行相同的操作:
ORDER BY 子句中使用的每個字面值都會生成一個不同的緩存查詢。
不對 ORDER BY 字面值執行字面值替換。
這是因為 ORDER BY 可以使用整數來指定列號。
更改這個整數將導致一個完全不同的查詢。
可以使用 CASE 表達式定義一個通用查詢,該查詢可以根據提供的主機變數值進行排序。
例如,下面的示例可以根據名稱或年齡排序,這取決於 var 的值:
下面的示例指定了兩個 CASE 表達式。
它按任何情況計算為true進行排序。
如果兩種情況都為真,則按國家排序,在國家內按城市排序:
ASC 和 DESC 參數在 CASE END 關鍵字之後指定。
注意,在 CASE 表達式中必須根據列名指定欄位。
在此上下文中,不能指定列別名或列號。
ORDER BY ordering-item 的值不應該超過(大約) 400 到 500 個字元,這取決於 ordering-item 的數量和其他因素。
如果一個 ordering-item 值超過這個最大長度,則運行帶有 ORDER BY 子句的查詢可能會導致 SQLCODE -400 致命錯誤。
這是因為全局引用的最大編碼長度有限制,這是一個固定的 IRIS系統限制。
為了防止這個問題,在作為 ORDER BY 子句基礎的欄位的排序規則設置中使用截斷長度。
例如,以下查詢超過了這個限制:
添加一個 maxlen 截斷長度的排序函數允許該程序成功執行:
IRIS將欄位的已整理值截斷為 400 個字元。
請記住,如果欄位內容在前 400 個字元內不是唯一的,則數據可能稍有混亂,但這種情況不太可能發生。
如果出現這種情況,可以嘗試通過使用更大的值進行截斷來避免顯示無序的數據;
但是,如果值太大,將導致 <SUBSCRIPT> 錯誤。
還要注意,最大長度是全局引用的整個編碼長度,包括全局名稱的長度。
它不是簡單的下標。
B. sql數據排序
最簡單的方法是增加一個置頂欄位,每個公司只有唯一一個。然後先按置頂欄位排序,再按時間排序。
select * from company,proct
where company.id = proct.company_id
order by proct.ding ,datetime
如果非要在一個query里解決。
select count(*),* from company,proct
where company.id = proct.company_id
group by company.id
union
select 1,* from company,proct
where company.id = proct.company_id
and proct.id not in (
select proct.id from (select count(*),* from company,proct
where company.id = proct.company_id
group by company.id))
order by datetime
但是這樣的效率非常差。
C. 通用SQL語句排序的方法
前十名:
select top 10 id,name,score from student order by score desc
第三名:
select top 1 * from (select top 3 * from [student] order by score desc) as tb1 order by score asc
註:使用 (top * asc )desc 這種方式在 rownumber 方法出來以前是最常用的sqlserver處理分頁取值的方式
D. 如何用SQL進行排序
您到底是什麼意思?是要生成序號?
是不是這樣:
SELECT BMMC,序號=
replace(
replace(
replace(
replace(
REPLACE(BMMC,'部門',''),
'a','00'),'b','01'),'c','02')
這是生成部門編號,與部門名稱中的字母順序一致。
如果字母只是ABC這幾個,這樣就可以了,不需要存儲過程。
E. sql的倒序排列命令怎麼輸入
Select * From 表名 Where ID In (Select Max From 表名 Group By 過濾重復的項名) 。
SQL語言,是結構化查詢語言(StructuredQueryLanguage)的簡稱。SQL語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統;同時也是資料庫腳本文件的擴展名。
SQL語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統可以使用相同的結構化查詢語言作為數據輸入與管理的介面。SQL語言語句可以嵌套,這使他具有極大的靈活性和強大的功能。
F. sql排除為空並且排序的命令
|desc]進行排序,nulls last 時,強制null放在最後,不為null的按聲明順序[asc|desc]進行排序
order by colum asc 時,null默認被放在最前,order by colum desc 時,null默認被放在最後,
ORDER BY IF(ISNULL(update_date),0,1) null被強制放在最前,不為null的按聲明順序[asc|desc]進行排序
ORDER BY IF(ISNULL(update_date),1,0) null被強制放在最後,不為null的按聲明順序[asc|desc]進行排序
G. sql中排序要怎麼寫
1.語法:
SELECT "欄位名"
FROM "表格名"
[WHERE "條件"]
ORDER BY "欄位名" [ASC, DESC];
2.注意事項:先分組再排序,運用的是ORDER BY,後面加的是你要按什麼排序,如果按照升序可以不用寫或者加上ASC;如果是降序,要加上DESC。
3.例子:SELECT id FROM user ORDER BY id;