J'ai lu quelques articles ayant le même problème. J'ai essayé d'adapter leurs réponses mais pas réussi. Je souhaite trier les colonnes par statut plutôt que par statut, puis trier les colonnes. mai la requête ci-dessous effacera mon pointConditionnel Ordre par clause dans mysql
SELECT a.*,STR_TO_DATE(d_date, "%m/%d/%Y")>CURDATE() as status
FROM table AS a ORDER BY status DESC,
IF(status=0,
'DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y"),CURDATE()) DESC',
'DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y"),CURDATE()) ASC')
MISE À JOUR: Après ci-dessous requête
SELECT a . * , STR_TO_DATE(d_date, "%m/%d/%Y") > CURDATE() AS
STATUS
FROM `table` AS a
ORDER BY STATUS DESC , IF(
STATUS =0, DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y") , CURDATE()) DESC , DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y") , CURDATE()) ASC)
LIMIT 0 , 30
J'ai l'erreur ci-dessous
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC, DATEDIFF(STR_TO_DATE(a.d_date, "%m/%d/%Y"),CURDATE()) ASC) LIMIT ' at line 4
Si mon nom de la table est table
que Pour ce recored
d_date
06/28/2012
06/23/2012
06/20/2012
06/19/2012
si la date actuelle est 06/21/2012
la sortie devrait être
d_date status
06/23/2012 1
06/28/2012 1
06/20/2012 0
06/19/2012 0
ces informations mai est suffisant. S'il vous plaît laissez-moi savoir si ce n'est pas encore clair.
Merci
Ne pas utiliser des guillemets dans votre 'IF' .. sinon, il sera considéré comme une chaîne. – arnep
est 'IF' pris en charge dans mysql ou non.Il douteux –
@Somebodyisintrouble: son autorisé. Voir [ici] (http://dev.mysql.com/doc/refman/5.5/en/if-statement.html) –