其餘這是我的表SQL查詢如何選擇特定的數據並輸出結果
ID Name 1 ddd 2 bbb 3 ccc 4 aaa 5 eee
是否有可能使一個查詢,將選擇具有一定的字母開頭的數據,並得到所有跟隨它的其餘部分,並留下它之前的其餘部分? 按字母順序。
什麼是查詢,如果我要選擇ccc, ddd, eee
結果應該是這樣..
ID Name 3 ccc 1 ddd 5 eee
其餘這是我的表SQL查詢如何選擇特定的數據並輸出結果
ID Name 1 ddd 2 bbb 3 ccc 4 aaa 5 eee
是否有可能使一個查詢,將選擇具有一定的字母開頭的數據,並得到所有跟隨它的其餘部分,並留下它之前的其餘部分? 按字母順序。
什麼是查詢,如果我要選擇ccc, ddd, eee
結果應該是這樣..
ID Name 3 ccc 1 ddd 5 eee
這工作:(見SQL Fiddle)
SELECT * FROM TABLE_NAME
WHERE NAME >=
(SELECT NAME FROM TABLE_NAME
WHERE NAME LIKE 'c%'
ORDER BY NAME ASC --to ensure first name is truly the first
LIMIT 1 --to ensure there's only one value from the subquery
)
ORDER BY NAME ASC
提交查詢的字母名字符合第一個字母的要求。主查詢獲取名稱匹配的所有行或按字母順序比子查詢結果更大的行。
的ASC
關鍵字是多餘的,但我想我會說清楚。
的LIKE
檢查是區分大小寫的。如果您希望它不區分大小寫,請使用UPPER(NAME) LIKE 'C%'
或LOWER(NAME) LIKE 'c%'
。你也應該主要查詢的其中條款更改爲WHERE UPPER(NAME) >=
或WHERE LOWER(NAME) >=
。
基於AjaySingh's answer,下面會工作得更好(更有效),但你只限於只匹配第一個字母(更復雜LIKE
模式仍然需要我上面的查詢)。
SELECT * FROM table_name WHERE name >= 'c' ORDER BY name
請參閱SQL Fiddle。 積分到AjaySingh凡到期。
嘗試:
SELECT * FROM @Temp WHERE name > 'c%' ORDER BY name
這種工作也是(並且執行計劃比我的更好),除非你必須改變條件爲'> ='c''才能更正確。因爲(a)運算符'>'不支持'%'模式匹配(b),所以可能有一行其中的值只是'c'。參見[Fiddle](http://sqlfiddle.com/#!2/ada7d2/5)。 – ADTC
嘗試......
SELECT * FROM TABLENAME WHERE NAME > 'CERTAINLETTER%' ORDER BY NAME
您不應該使用保留的名稱,例如NAME作爲字段名稱。將其改爲像fldNAME之類的東西。
哦,對不起,我不明白這個問題。已經編輯它。 –
>Ç??????????? – Strawberry
@ user3167278:'ORDER BY'? –