2011-04-21 4 views
3

J'ai deux colonnes des bases de données dans une base de données MySQL, A et B. Dans une requête de sélection, je veux mettre en œuvre cette logique:Mysql Sélectionner l'état de requête

Sélectionner les lignes où A est « X ». Si A n'est pas placé dans une rangée, alors cochez et sélectionnez la rangée seulement si la colonne B = 'Y'.

Donc, on peut dire que la colonne B est une solution de repli pour la colonne A.

Comment pourrais-je construire une requête SELECT avec « X » et « Y » en entrée pour la clause WHERE?

Répondre

7

Utilisez la logique booléenne:

SELECT * 
FROM table 
WHERE A = 'X' OR (A IS NULL AND B = 'Y') 
+0

J'ai une question sur cette solution. Cette requête retournera A et B (à cause de 'SELECT *') et peut-être que l'un d'entre eux sera nul. Y at-il un moyen de ne pas retourner A dans le cas où il est nul? – frabala

+0

@frabala Si vous avez une question à poser en utilisant le lien «Poser une question» en haut, vous obtiendrez beaucoup plus de réponses qu'un commentaire sur une ancienne réponse de l'année dernière :) – Yamikuronue

+0

Ouais, vous êtes droite. – frabala

2

Je pense que cela devrait fonctionner:

SELECT * FROM table 
WHERE (A='X') OR ((A IS NULL) AND (B='Y')) 
2

SELECT * FROM table WHERE A='X' OR (A IS NULL AND B='Y')

Questions connexes