Home > Mobile >  Sort by multiple column values in a table
Sort by multiple column values in a table

Time:04-20

I have a shipment table in the following format:

Shipment Source Destination
shipment 1 Spain France
shipment 2 Landon Germany
shipment 3 Netherlands Sweden
shipment 4 Finland France
shipment 6 Landon Belgium
shipment 7 Landon France
shipment 8 Germany France
shipment 9 Landon France
shipment 10 Landon France
shipment 11 Germany France

How I can sort the above table with all the Germany to France appear first, then Landon to France followed by Landon to Germany, then the remaining shipments.

Shipment Source Destination
shipment 11 Germany France
shipment 8 Germany France
shipment 7 Landon France
shipment 9 Landon France
shipment 10 Landon France
shipment 2 Landon Germany
shipment 1 Spain France
shipment 3 Netherlands Sweden
shipment 4 Finland France
shipment 6 Landon Belgium

Thanks for the help!

CodePudding user response:

Here's the idea of using a CASE statement inside the ORDER BY clause, as already suggested in the comments:

SELECT 
    * 
FROM 
    Shipments
ORDER BY 
    CASE WHEN `Source` = 'Germany' AND `Destination` = 'France' THEN 1
         WHEN `Source` = 'Landon' AND `Destination` = 'France'  THEN 2
         WHEN `Source` = 'Landon' AND `Destination` = 'Germany' THEN 3
         ELSE 4
    END

Here's a fiddle too: https://www.db-fiddle.com/f/58b3pWrUAeobtNd7yyUwwq/0.

  • Related