2013-04-27 94 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