2015-11-23 1 views
1

J'ai une table ("comments") pleine de commentaires, la date à laquelle ils ont été créés, et, s'ils ont été poussés vers l'avant via PHP bouton, la date de cela aussi (sinon la date sera '0000-00-00'). Ce que je voudrais, c'est que la table soit affichée normalement, mais que les commentaires qui ont été "repoussés" soient poussés à un endroit dans la table avec un ORDER BY de date de création ("created"). Voici un exemple de ce que je voudrais réaliser: quelles sont les invellations qui poussent un vieux commentaire (ID: 4) vers le haut? (NOTE: il n'y a pas d'ID dupliqués dans la table, seul le résultat de la requête dupliquera les enregistrements refondus comme indiqué ici):SQL - Afficher une ligne deux fois en commandant le "doublon repush" par date créée

id | comment | created    | repushed 
---+---------+---------------------+------------------- 
4 | hello | 2015-05-11 06:11:12 | 2015-11-22 11:17:01 
23 | recent | 2015-05-22 12:18:23 | 0000-00-00 00:00:00 
22 | recent | 2015-05-22 11:15:43 | 0000-00-00 00:00:00 
21 | recent | 2015-05-22 10:23:10 | 0000-00-00 00:00:00 
4 | hello | 2015-05-11 06:11:12 | 2015-11-22 11:17:01 

Je suis en train d'utiliser UNION de combiner tous les commentaires avec des commentaires repushed (donc tous les commentaires seront repushed apparaître dupliqués une fois recherchée), mais je veux traiter la repushed dupliqué commentaires comme s'ils avaient été créés au moment où ils ont été refaits, donc j'aurais besoin d'échanger les valeurs de colonnes "créées" et "repassées" des doublons pour obtenir cet effet, et le n ordre par "créé".

SELECT * 
FROM comments 
WHERE repushed != '0000-00-00 00:00:00' 
UNION ALL       
SELECT * 
FROM comments 
ORDER BY created DESC 

Bien sûr, cela ne fonctionne pas comme prévu puisque je ne sais pas comment échanger les deux valeurs de la colonne autour.

+0

Pourriez-vous ajouter votre résultat attendu? – davejal

+0

Salut. Le tableau que j'ai montré ici est mon résultat attendu/prévu – Justin

Répondre

1

Travailler avec ce que vous avez déjà essayer:

SELECT id,comment,repushed as created,repushed 
FROM comments 
WHERE repushed != '0000-00-00 00:00:00' group by id 
UNION ALL 
SELECT * 
FROM comments group by id ORDER BY created DESC 

Cela renommer la colonne repushed pour créer

+1

ne devrait-il pas commander seulement sur le 2ème syndicat sélectionner? – roullie

+0

J'ai: Échec de la requête de base de données: Chaque table dérivée doit avoir son propre alias – Justin

+0

essayer ma modification (a supprimé l'ordre entre dans les parenthèses) – davejal