Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql zapytanie PHP:chcę, aby określone elementy były najpierw, a następnie posortować resztę elementów

Możesz zamówić przez jeden z następujących

order by owner <> 'Jan'
order by owner = 'Jan' desc
order by case when owner = 'Jan' then 0 else 1 end
order by if(owner = 'Jan',0,1)

owner = 'Jan' tworzy 1 dla True i 0 dla False , dlatego desc

Ponadto, ponieważ nie obchodzi cię kolejność pozostałych wierszy z wyjątkiem pierwszych czterech, równie dobrze możesz zachować pozostałe wiersze Jan w kontynuacji.

Spróbuj tego:

SELECT 
    id, car_name, owner
FROM
    ((SELECT 
        0 x, t.*
    FROM
        your_table t
    ORDER BY owner <> 'Jan' , id
    LIMIT 4) UNION ALL (SELECT 
        *
    FROM
        (SELECT 
        1 x, t.*
    FROM
        your_table t
    ORDER BY owner <> 'Jan' , id
    LIMIT 4 , 1000) t
    ORDER BY id)) t
ORDER BY x , id;

Działa tylko wtedy, gdy Jan ma 4 lub więcej wierszy.

SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aktualizuj pole, gdy nie jest puste

  2. Jak wstawić tablicę json do bazy danych mysql?

  3. Jak mogę wykonać wiele zapytań na jednej stronie?

  4. Nieprawidłowa próba odczytu, gdy czytnik jest zamknięty

  5. użyj wartości kolumny jako nazwy kolumny mysql