2013-04-27 97 views
1

我想通過一個數字值從mysql表中刪除一些行。Mysql PHP查詢選擇

如:SELECT * FROM table ORDER BY ABS(row1) DESC

表格式:

ID |類型|值

1 | 2 | 42

2 | 1 | 52

3 | 2 | 67

4 | 2 | 50

5 | 1 | 15

6 | 1 | 27

7 | 3 | 48

8 | 3 | 23

,我希望得到以下結果 - 通過值DESC但與2型和DESC首秀行和後那種類型1,3,4(...)行DESC:

ID |類型|值

3 | 2 | 67

4 | 2 | 50

1 | 2 | 42

2 | 1 | 52

7 | 3 | 48

6 | 1 | 27

9 | 3 | 23

5 | 1 | 15

回答

0

排序這是order by要:

order by `type` = 2 desc, 
     value desc 

表達type = 2返回一個布爾值,這相當於1時如果爲false,則爲0。你的例子沒有負值,所以我沒有看到需要abs()

+0

作品!謝謝,還有'abs()'是個錯誤。 – IonutD 2013-04-28 07:14:22

0

則可以通過兩個或多個字段

SELECT * FROM table ORDER BY ABS(row1), row2, row3 DESC 
+0

我不想訂購類型列,我只想要第一行是類型2,值爲DESC,然後值爲DESC,類型爲1,3,4,5,6 ... – IonutD 2013-04-27 15:59:41

+0

哦,使用GROUP BY列' – monkeyinsight 2013-04-27 16:02:34

+0

我的意思是第一個結果是類型2的行和按值DESC排序,並且在這些結果之後是其餘類型(不是按順序),而是按值DESC排序。我已經更新了類型3的主要職位,以澄清事情。我可以做這個結果在兩個查詢的PHP,但我想知道是否有可能做到這一點只有一個查詢,因爲我使用LIMIT的結果。 – IonutD 2013-04-27 16:04:38