Mysql COMMANDE, EN utilisant les données de date ligne
J'ai une requête à quelque chose comme ceci:
SELECT
title, desc, date
FROM
tablename
ORDER BY
date ASC, title ASC;
Fonctionne bien lorsque les données effectivement a une date. Question est, la date de soumission est facultative, de sorte que parfois, j'ai des 0000-00-00 comme une date, qui a malheureusement pour effet de placer tous les nondated lignes sur le dessus.
Donc, j'ai ensuite essayé ceci:
SELECT
title, desc, date
FROM
tablename
ORDER BY
date DESC, title ASC;
Qui fonctionne, mais pas vraiment, tous les articles avec les dates (non 0000-00-00) obtenir énumérés dans l'ordre décroissant, suivie par tous les articles avec le 0000-00-00.
Ce que je veux faire est d'ordre par date de l'ASC, le titre de l'ASC, mais seulement si la date != 0000-00-00, mais si la date est = 0000-00-00, puis il suffit de COMMANDER PAR le titre de l'ASC (et je pense que j'ai expliqué que correctement).
La seule façon que je peux penser pour ce faire sont non-SQL (soit 2 requêtes, ou, chaque requête remplit un en mémoire le tableau, puis-je trier à l'aide de PHP).
Est-il une requête SQL qui peut faire cela?
OriginalL'auteur OneNerd | 2009-05-19
Vous devez vous connecter pour publier un commentaire.
Votre 2 de la requête solution est un bon un, vous pouvez le faire en SQL à l'aide de la
UNION
commande.La première requête sera pour les dates qui sont non nuls, alors l'UNION dans la requête pour les dates qui sont de zéro.
Edit: quelque Chose comme:
Cela peut ne pas être très utile dans ce cas, mais pour des requêtes complexes,
UNION
peut venir dans maniable.Oups, vous avez raison, l'UNION techniquement fait des choses sans ordonnance important, mais la parenthèse empêche cela, je crois que dans la référence qu'il fait dire cela.
OriginalL'auteur Kekoa
OriginalL'auteur Frank Farmer