2013-09-23 53 views
2

我有一個表像通過第一SQL命令,然後單擊Next

STUDENTNAME ISMANUALLYADDED ISEDITED 
----------- --------------- -------- 
APPLE    0    0 
ANT    0    1 
BELL    0    0 
DOLL    1    0 

在這裏,我想通過studentname首先對數據進行排序,然後通過ismanuallyadded,然後通過isedited。我期待像

StudentName 
----------- 
APPLE 
BELL 
DOLL 
ANT 

對於這個結果,我試圖像,

select studentname from table1 
order by studentname, ismanuallyadded, isedited 

但是,這個查詢給出結果一樣,

Student 
------- 
APPLE 
ANT 
BELL 
DOLL 

是有可能通過studentname訂購先按ismanuallyadded ......

可以幫我一個人在這裏, 提前致謝。

什麼我想是的,我要顯示所有studentnames(既不manually added也不isedited)alphabatically,那麼只有ismanuallyadded學生要來,然後isedited

+2

請解釋預期結果的邏輯。 –

+1

我認爲你有一個困惑:第一個結果是沒有命令。除了您指定的以外,Sql查詢沒有ORDER。你的第一個查詢是一個隨機順序。也許等於插入數據的順序,但它只是偶然的。最後一個查詢是按字母順序排列的,因爲您按順序排列。.. –

+1

您的排序順序錯誤。你說的是:*按學生名排序,如果兩個或多個具有相同的學生名,按ismanuallyadded排序,如果兩個或具有相同的手動添加狀態,按isedited *排序。這與您所期望的結果不符。 – Stijn

回答

9

order by中的第二個條件僅用於不同的行在先前條件中具有相同值的情況。

您的行都具有相同的學生名,所以第二個和第三個標準從不使用。

嘗試這種情況:

select studentname from table1 
order by isedited, ismanuallyadded, studentname 
+0

非常感謝,這是行得通的。 – shanish

1

如果你想你指定的結果,你被ismanuallyadded和然後 studentname,而不是其他方式ordeing試試這個

select studentname from table1 
order by studentname ASC, ismanuallyadded ASC, isedited ASC 
+0

謝謝你的回覆ramesh – shanish

1

從表1中選擇學生名稱 按ismanuallyadded排序,studentname,isedited。

您當前的查詢顯示:order by studentname,那麼如果studentname對於兩行是相同的,則按ismanuallyadded排序。你似乎想要說是人手加入,然後以相同的人數加入狀態,給我按學生名排列的結果。

+0

我已經更新了我的問題,可以檢查它並幫助我。 – shanish

+0

感謝您的回覆 – shanish

1

第二個字段進行排序時,在所述第一字段中具有相同值找到多個條目時才使用。你沒有這個情況,所以應該只排序第一場(蘋果公司前應產生ANT ...)

您預期的結果將與排序順序
爲了通過isedited,ismanuallyadded實現,學生姓名

+0

謝謝我得到了解決方案。 – shanish

相關問題