2010-05-31 6 views
0

Je veux obtenir des valeurs distinctes pour un champ, laissez dire: field1 ... Cela a besoin d'une requête comme: "select distinct (field1) de la table"mysql requête conditionnelle - compliquée

Toutefois, pour certains dossiers, field1 est vide et une autre colonne est une alternative à field1, field2. Pour les enregistrements où field1 est vide, j'ai besoin d'utiliser la valeur de field2. Je pense que je dois en quelque sorte une instruction select conditionnelle avec contrôle si quelque chose comme:

select distinct((if(field1!='') field1 else field2)) from table 

Je n'ai aucune idée sur la façon de l'écrire. Toute aide est appréciée ...

+0

peut-être pas si compliqué :) – emre

Répondre

1
SELECT DISTINCT (
IF(coalesce(field1,'') <> '', field1, field2) 
) 
FROM table 

Cela pourrait fonctionner pour les deux field1 nulle et vide.

+0

merci! Ça marche. – emre

2

SELECT DISTINCT IFNULL (champ1, champ2) FROM table

devrait faire l'affaire.

+0

votre solution a donné 64 résultats tandis que ma requête ci-dessous a renvoyé 74!?! J'analyse les résultats pour voir les différences et posterai mes commentaires plus tard ici. – emre

0

Je pense que je l'ai fait (pas sûr si le résultat est correct):

SELECT DISTINCT (
IF(field1 <> '', field1, field2) 
) 
FROM table 
+1

La valeur NULL et la chaîne vide ne sont pas identiques. Peut-être que cela explique la différence? –