В таблице у меня есть три поля: 1. grading - может содержать значение 1 - 10 2. last_active - содержит дату последней активации 3. username - содержит если у пользователя агент (username - имя агента) Мне нужно, чтобы из базы данных данные выбирались в следующем порядке: Выбрать все записи, сначала те у которых grading больщий, потом если grading равен, выбирать у кого дата последней активации last_active больше.....и потом все это мне нужно отсортировать, чтобы сначала шли записи у которых username есть, а потом у которых его нет. Просто сначала записи у которых есть значение в поле username с полем grading от 10 до 1 , потом у которых нет значения в поле username с полем grading от 10 до 1. Помогите с запросом.
тут проще в два захода: select * from yourtable where username<>'' order by grading desc, last_active desc select * from yourtable where username='' order by grading desc, last_active desc
SELECT * FROM table ORDER BY ISNULL(username), grading DESC, last_active DESC; либо SELECT * FROM table ORDER BY grading DESC, last_active DESC, ISNULL(username); В зависимости от того как понимать
IS NULL есть в MySQL и используется для сравнения на NULL. Например, `field` IS NULL. А ISNULL() функция, которая возращает 1 или 0, если аргумент NULL или не NULL соответственно.