优先考虑找到匹配项的字段

时间:2012-03-08 22:17:08

标签: mysql sql

假设我有这些字段:

+--------+----------+-----------+
| 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 个答案:

答案 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;

答案 1 :(得分:1)

几个问题:

  • read_toread_from始终为0还是1?
  • 您需要具体的订购吗?

如果值始终为1或0且您不需要特定排序,则可以使用ORDER BY

SELECT *
FROM table
ORDER BY
    read_to DESC,
    read_from DESC

答案 2 :(得分:1)

您必须使用ORDER BY子句。

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

答案 3 :(得分:1)

也许是这样的:

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