web-dev-qa-db-fra.com

Ordre MySQL par deux colonnes

J'ai une table comme ci-dessous

 
 CREATE TABLE Produits (Product_id INT, ProductName VARCHAR (255), 
 Énumération sélectionnée ('Oui', 'Non'), énumération prioritaire ('p1', 'p2' , 'p3')) 
 
 
 INSÉRER DANS des produits (ProductName, Featured, Priority) 
 VALEURS ('Product A', 'Oui', 'p1' ), 
 ('Produit B', 'Non', 'p2'), 
 ('Produit C', 'Oui', 'p1'), 
 ('Produit D ',' Non ',' p1 '), 
 (' Produit E ',' Oui ',' p3 '), 
 (' Produit F ',' Non ',' p2 ' ), 
 ('Produit G', 'Oui', 'p1'), 
 ('Produit H', 'Oui', 'p2'), 
 ('Produit I ',' Non ',' p2 '), 
 (' Produit J ',' Oui ',' p3 '), 
 (' Produit K ',' Oui ',' p1 ' ), 
 ('Produit L', 'Non', 'p3'); 
 
 

J'ai besoin d'obtenir les produits en vedette suivis par les produits de priorité p1, p2 et p3

 
 Op: 
 ProdName | En vedette | Priorité 
 
 Produit A Oui p1 
 Produit C Oui p1 
 Produit G Oui p1 
 Produit K Oui p1 
 Produit H Oui p2 
 Produit E Oui p3 
 Produit J Oui p3 
 Produit D Non p1 
 Produit B Non p2 
 Produit F Non p2 
 Produit I Non p2 
 Produit L Non p3 
 

J'ai écrit une requête ci-dessous qui ne fonctionne pas ..

                                            
 SELECT * 
 FROM Produits 
 ORDER BY En vedette dans (Oui) déc., 
 Priorité IN ('p1', 'p2', 'p3') desc 

Pourriez-vous s'il vous plaît tache erreur dans

11
Athi

Essaye ça

Select * from Products ORDER BY Featured, Priority

Si vous utilisez ORDER BY sur mysql enum, il ne le classera pas par ordre alphabétique, mais par sa position dans enum.

Si vous souhaitez classer par ordre alphabétique, décrivez le nom de l’énum en une chaîne comme celle-ci.

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

Pourquoi n'utilisez-vous pas simplement SQL comme:

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

En faisant cela, Yes apparaîtra avant No. P1 apparaîtra avant P2 et P2 avant P3. Je crois que c'est ce que tu veux.

Si le type de données est problématique lors de la commande,

 SELECT * 
 FROM Products
  ORDER BY CONCAT(Featured) desc,
        CONCAT(Priority) asc;
3
Yogendra Singh

Vérifiez cette requête--

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

Fiddle

Travail de vérification de code de violon

0
swapnesh