SQL AIDER - à condition where, base sur un PEU variable SQL Server
J'ai besoin d'aide pour rédiger une condition de la clause where. voici ma situation:
J'ai un peu de valeur qui détermine ce que les lignes de retour dans une instruction select. Si la valeur est true, j'ai besoin de retourner les lignes où la import_id colonne n'est pas nulle, si la valeur est false, alors je veux les lignes où la import_id colonne est null.
Mon essai d'une telle requête (ci-dessous) ne semble pas fonctionner, quelle est la meilleure façon d'accomplir cette?
DECLARE @imported BIT
SELECT id, import_id, name FROM Foo WHERE
(@imported = 1 AND import_id IS NOT NULL)
AND (@imported = 0 AND import_is IS NULL)
Grâce.
OriginalL'auteur mmattax | 2009-03-09
Vous devez vous connecter pour publier un commentaire.
Changer le
AND
àOR
De décomposer votre déclaration d'origine
vous avez essentiellement écrite
qui est équivalent à
quels sont les résultats de deux paires de clauses de nier complètement les uns des autres
Merci...ça doit être un cas de les lundis...
été là... 🙂
OriginalL'auteur Lieven Keersmaekers
Je pense que vous vouliez dire
OriginalL'auteur sfossen
Votre requête aurait besoin d'un OU de sélectionner entre les différents filtres.
C'est mieux pour l'optimiseur si vous utilisez des requêtes distinctes dans ce cas. Oui, le code de redondance est mauvais, mais à l'optimiseur de ces radicalement différentes (et non redondant) des requêtes.
Plus de complexité -> raison de plus pour briser ce dans le nombre exact de requêtes. stackoverflow.com/questions/266697/...
OriginalL'auteur Amy B