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