2012-12-20 57 views
2

我剛剛看到下面的語法:select * from table order by column = "b" desc 我猜測值爲「b」的行會先到達,但我不確定。 查詢的意思是什麼以及在這種情況下如何排序。按語法排序的MySQL

我在谷歌搜索了它,但沒有成功。

+0

如果您想知道如何排序,只需在部分選擇部分中添加命令'SELECT *,column =「3」sort FROM table ORDER BY column =「3」DESC' http://sqlfiddle.com/#!2/b07c5/2/0 –

回答

3

在SQL中,您不受對現有列的值進行排序的限制:您可以在order by子句中指定複雜表達式。此查詢按布爾表達式的值進行排序:表達式對於所有其他行中的行column = 'b'false爲true。結果,列='b'的行將排在第一位,因爲order by子句指定降序,而在SQL中,true表示爲1,且false爲0.

+0

oh謝謝:)但其他的那些返回false ...他們的順序是什麼? – alexanderg

+2

@alexander'false'是「小於」'true';所有具有'b'的行將在沒有'b'的行之前,但除此之外,行的順序將保持不變。由於沒有「打破平局」,兩組內的行(即有或沒有「b」)將保持無序。 – dasblinkenlight

+0

在SQL中,true表示爲1,false爲0. – Barmar