Отдайте приоритет тем полям, где найдено совпадение - PullRequest
2 голосов
/ 09 марта 2012

Предположим, у меня есть следующие поля:

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

Теперь, допустим, я сделал простой запрос, подобный этому:

SELECT * FROM `table`

Теперь я хотел бы выбрать first те поля 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 ]

4 голосов
/ 09 марта 2012

Вот решение, которое позволяет вам указать условие для «продвигаемых» записей.

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 голос
/ 09 марта 2012

Вы должны использовать предложение ORDER BY.

SELECT * FROM `table` ORDER BY read_to,read_FROM DESC
1 голос
/ 09 марта 2012

Может быть, что-то вроде этого:

SELECT
  *
FROM
  Table1
ORDER BY
  Table1.read_to DESC,
  Table1.read_from ASC
1 голос
/ 09 марта 2012

Пара вопросов:

  • read_to и read_from всегда 0 или 1?
  • Какой конкретный заказ вам нужен?

Если значения всегда равны 1 или 0 и вам не требуется конкретный порядок, вы можете использовать ORDER BY:

SELECT *
FROM table
ORDER BY
    read_to DESC,
    read_from DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...