2009-01-23 8 views
0

J'ai une table de base de données pleine de certaines données vraiment laides et salissantes. Dans une table séparée, j'ai une version plus propre des données et elles sont liées par un identifiant, mais j'ai besoin de garder le jeu de données désordonné et je ne peux pas l'écraser car je l'utilise pour vérifier les différences de données.priorité de ligne MySQL

J'essaie de fusionner les données dans une nouvelle table, OU utiliser une seule requête sur les deux tables et donner la priorité aux résultats de la table propre dans le résultat. Donc, si id = 3 uglydata = x7z cleandata = xyz, alors j'obtiendrais les données propres, si cleandata était nul, j'obtiendrais les données moche. J'ai essayé de sélectionner cleandata AS uglydata, en espérant que mysql remplacerait simplement l'autre champ, mais cela ne fonctionne pas (et oui, c'est bizarre et j'ai pensé que ça ne marcherait pas).

Est-ce une bonne façon de faire cela? L'autre solution que je peux penser si est simplement d'insérer dans la nouvelle table à partir des données propres d'abord, puis insérez à partir des données laides comme l'offre est unique. Mais j'espère que je serai en mesure de classer les résultats par type ou quelque chose de prioritaire.

Répondre

3
SELECT IFNULL(cleandata, uglydata) 
FROM uglytable 
LEFT OUTER JOIN cleantable 
ON clean_id = ugly_id 
+0

C'est génial Quassnoi! J'ai littéralement cherché comment faire cela pour les JOURS !!! Merci beaucoup! – pedalpete

+0

Votez pour la réponse alors, c'est un meilleur merci :) – Quassnoi

Questions connexes