2012-03-08 46 views
2

假设我有以下字段:优先考虑在那里找到匹配这些领域

+--------+----------+-----------+ 
| id  | read_to | read_from | 
+--------+----------+-----------+ 
| 1 | 0  | 0   | 
+--------+----------+-----------+ 

现在比方说,我做这样的简单查询:

SELECT * FROM `table` 

现在我想选择第一这些字段WHERE read_to = 1 OR read_from = 1

然后选择其余的数据。

因此,举例来说,如果有这样的结构:

1 - 0 - 0 
2 - 1 - 0 
3 - 0 - 0 
4 - 1 - 1 

我会得到这样的事情:

2 - 1 - 0 
4 - 1 - 1 
1 - 0 - 0 
3 - 0 - 0 

回答

4

这里有一个解决方案,让您为“提升”的记录情况。

SELECT * 
FROM test 
ORDER BY CASE 
    WHEN read_to = 1 AND read_from = 1 THEN 0 -- you can tune the condition here 
    ELSE 1 
END; 
+0

谢谢你,这是我所需要的 – Linas 2012-03-09 19:12:52

1

几个问题:

  • read_toread_from始终0还是1?
  • 是否有任何特定的订购需求?

如果值始终为1或0,你并不需要一个特定的顺序,你可以使用一个ORDER BY

SELECT * 
FROM table 
ORDER BY 
    read_to DESC, 
    read_from DESC 
+0

它可以是0或1 – Linas 2012-03-08 22:24:29

1

您必须使用ORDER BY子句。

SELECT * FROM `table` ORDER BY read_to,read_FROM DESC 
1

也许是这样的:

SELECT 
    * 
FROM 
    Table1 
ORDER BY 
    Table1.read_to DESC, 
    Table1.read_from ASC