users - MySQL Order by Two Columns




sql order by two columns at the same time (3)

Check this query--

 SELECT * 
 FROM Products
  ORDER BY Featured asc,Priority,ProductName asc;

Fiddle

Working code check fiddle

I have a Table Like Below

    CREATE TABLE Products(Product_id INT, ProductName VARCHAR(255), 
                          Featured enum('Yes', 'No'), Priority enum('p1', 'p2', 'p3'))


    INSERT INTO Products(ProductName, Featured, Priority) 
                  VALUES('Product A', 'Yes', 'p1'),
                        ('Product B', 'No',  'p2'),
                        ('Product C', 'Yes', 'p1'),
                        ('Product D', 'No',  'p1'),
                        ('Product E', 'Yes', 'p3'),
                        ('Product F', 'No',  'p2'),
                        ('Product G', 'Yes', 'p1'),
                        ('Product H', 'Yes', 'p2'),
                        ('Product I', 'No',  'p2'),
                        ('Product J', 'Yes', 'p3'),
                        ('Product K', 'Yes', 'p1'),
                        ('Product L', 'No',  'p3');


I Need to get the Featured products followed by product with priority p1, p2 and p3

Op:
   ProdName | Featured  | Priority

    Product A   Yes         p1
    Product C   Yes         p1
    Product G   Yes         p1
    Product K   Yes         p1
    Product H   Yes         p2
    Product E   Yes         p3
    Product J   Yes         p3
    Product D   No          p1
    Product B   No          p2
    Product F   No          p2
    Product I   No          p2
    Product L   No          p3

I Wrote a query below which ain't working..

                                           
  SELECT * 
    FROM Products
   ORDER BY Featured IN ('Yes') desc,
            Priority IN ('p1', 'p2', 'p3') desc

Could u plz spot mistake in that


Try this

Select * from Products ORDER BY Featured, Priority

If you use ORDER BY on mysql enum it will not order it by alphabetically but it will order it by its position in enum.

If you want to order alphabetically as you describe cast the enum name to a string like this

Select * from Products ORDER BY  concat(Featured) desc , Priority 

SELECT * 
    FROM Products
where Featured IN ('Yes') and
      Priority IN ('p1', 'p2', 'p3')
Order by Featured asc,Priority,ProductName asc;

This should work





database