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
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
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;
Vérifiez cette requête--
SELECT *
FROM Products
ORDER BY Featured asc,Priority,ProductName asc;
Travail de vérification de code de violon