我有一個複雜的優先級排序算法,我希望在SQL中寫入以返回優先級排序的數據頁面時。SQL查詢中的複雜排序:可能使用CASE WHERE
其中一些按照固定值排列優先級,另一些按變量值排序。即
// Initial sort on ATTR1 (value1/value2 is higher than value3)
if ATTR1 = value1 or value2
then orderBy creationDate, then modifiedDate, then author
else if ATTR1 = value3
then
// if ATTR1 = value3, do secondary sort on ATTR2 (value4 is higher than value5)
if ATTR2 = value4
then orderBy oldPriority, then modifiedDate, then creationDate, then author
if ATTR2 = value5
then orderBy creationDate, then modifiedDate
我曾看過SQL CASE WHEN,但不知道如何使第二級屬性比較的工作。
CASE WHEN是一個合適的工具嗎?有沒有人有任何提示處理額外的複雜程度?
預先感謝您!
我不知道這是有道理的:如果有隻有2行和一個具有ATTR1 =值和其他有ATTR1 =值3和ATTR2 = value4,應該先排序? – 2010-09-10 11:14:18
我在原來的問題中加入了一些評論:) – laura 2010-09-10 11:25:10
道歉,很快就發送了一個。行應首先由ATTR1優先(按照此次序value1,value2,value3) - 因此在您的示例中,ATTR1 = value1將首先出現。然後如果ATTR1 =值3,繼續做第二類 – laura 2010-09-10 11:28:05