sql >> Databáze >  >> RDS >> Mysql

mysql dotaz PHP:Chci, aby konkrétní položky byly první a pak seřadit zbytek položek

Objednávat můžete kterýmkoli z následujících

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' vytváří 1 pro True a 0 pro False , proto desc

Vzhledem k tomu, že se nestaráte o pořadí zbývajících řad kromě prvních čtyř, můžete také ponechat zbývající řady Jan v pokračování.

Zkuste toto:

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;

Funguje, pouze pokud má Jan 4 nebo více řádků.

SQLFiddle



  1. Jak nastavit MySQL pro použití GMT ve Windows a Linuxu

  2. MYSQL:Metoda SELECT – ale nezobrazují se duplikáty / GROUP nebo DISTINCT?

  3. specifikující classpath pro samostatný jython

  4. Vytvoření databázového poštovního účtu v SQL Server (T-SQL)