我有一個非常簡單的表,有企業和一列DisplayBiz = varchar(1)
是Y或N ...我想要一個腳本從數據庫中提取數據首先所有的「Y」,然後所有的「N」共十個,我希望他們按商家名稱排列。SQL SELECT查詢
有沒有辦法做到這一點?我假定這將是這樣的:
SELECT TOP 10 MemberID,
BizName
ORDER BY BizType
但這並不考慮到DisplayBiz列
任何想法?
非常感謝..!
我有一個非常簡單的表,有企業和一列DisplayBiz = varchar(1)
是Y或N ...我想要一個腳本從數據庫中提取數據首先所有的「Y」,然後所有的「N」共十個,我希望他們按商家名稱排列。SQL SELECT查詢
有沒有辦法做到這一點?我假定這將是這樣的:
SELECT TOP 10 MemberID,
BizName
ORDER BY BizType
但這並不考慮到DisplayBiz列
任何想法?
非常感謝..!
可以BY子句中的順序添加多個列:
-- ...
ORDER BY DisplayBiz DESC, BizType
這將使y行,然後再N行。
這將得到顯示比例爲'Y'的前10個按字母順序排列的BizNames。如果有小於10,它將以重新開始對那些「N」 ......
SELECT TOP 10 MemberID, BizName, DisplayBiz
FROM dbo.table
ORDER BY
CASE WHEN DisplayBiz = 'Y' THEN 1 ELSE 2 END,
BizName;
您還可以使用:
ORDER BY
DisplayBiz DESC,
BizName;
但我更喜歡CASE
- 而更多的代碼,你沒有利用Y/N的英文拼寫。似乎更加明確。
如果該列總是隻有1個字符長 - 使它成爲CHAR(1),併爲VARCHAR部分節省2個字節的開銷(這真的不會在這裏發揮作用).... –
+1 @marc_s - 我的pet peeve以及varchar(小於4的任何東西)' – JNK
爲什麼不使用bit/boolean列呢? –