本文介紹了如何按 SQL 中的任意條件排序的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我有下表:
CREATE TABLE Bable(id int 身份主鍵,名稱 varchar(20),關(guān)于 varchar(30));INSERT INTO Bable (name,about) VALUES('ООО Name Firm 1','texttexttexttext'),('ООО Name Firm 2','texttexttexttext'),('ООО Name Firm 3','texttexttexttext'),('ООО Name Firm 4','texttexttexttext'),('ООО Name Firm 5','texttexttexttext'),('ООО Name Firm $1','texttexttexttext'),('ООО Name Firm $2','texttexttexttext'),('ООО Name Firm $3','texttexttexttext'),('ООО Name Firm 6','texttexttexttext'),('ООО Name Firm 7','texttexttexttext')
我可以編寫如下查詢:
SELECT * FROM Bable WHERE about = 'texttexttexttext'
如何更改此查詢以返回排序的結(jié)果,使得名稱包含$"的那些首先出現(xiàn),然后是那些不出現(xiàn)的,然后每個(gè)組按 name
升序排列?>
表格結(jié)構(gòu)在這里
解決方案
SELECT *從 BableORDER BY CASE WHEN name LIKE '%$..' THEN 0 ELSE 1 END,姓名
- SQLFiddle 演示
I have the following table:
CREATE TABLE Bable
(
id int identity primary key,
name varchar(20),
about varchar(30)
);
INSERT INTO Bable (name,about) VALUES
('ООО Name Firm 1','texttexttexttext'),
('ООО Name Firm 2','texttexttexttext'),
('ООО Name Firm 3','texttexttexttext'),
('ООО Name Firm 4','texttexttexttext'),
('ООО Name Firm 5','texttexttexttext'),
('ООО Name Firm $1','texttexttexttext'),
('ООО Name Firm $2','texttexttexttext'),
('ООО Name Firm $3','texttexttexttext'),
('ООО Name Firm 6','texttexttexttext'),
('ООО Name Firm 7','texttexttexttext')
And I can write a query like the following:
SELECT * FROM Bable WHERE about = 'texttexttexttext'
How can I alter this query to return results ordered such that those with names containing "$" appear first, followed by those that do not, with each group then ordered by name
ascending?
Structure of the table is here
解決方案
SELECT *
FROM Bable
ORDER BY CASE WHEN name LIKE '%$..' THEN 0 ELSE 1 END,
Name
- SQLFiddle Demo
這篇關(guān)于如何按 SQL 中的任意條件排序的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!
【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!