Instruction SQL Update avec une Cas avec la sélection à l'Intérieur de
Je veux exécuter une mise à jour en masse déclaration qui sélectionne les min et max d'une colonne. Le problème est qu'il y a plusieurs colonnes avec des valeurs null. Si NULL
alors, je veux MinValue
à 0
.
J'ai la déclaration suivante, mais j'obtiens des erreurs avec le SELECT
et ELSE
:
UPDATE Table1 SET MaxValue = (
SELECT MAX(column1) FROM Table2),
MinValue = (CASE
WHEN SELECT MIN(column1) FROM Table2 <> NULL
THEN SELECT MIN(column1) FROM Table2
ELSE '0'
END)
Ce qui me manque?
- On ne peut pas comparer à la valeur NULL dans cette manière et je suis assez sûr que MIN ignore les valeurs Null à moins qu'il n'y a pas d'autres options... pas la raison de cette erreur, mais vous aurez des problèmes. Le CAS est conçu de manière à avoir le même type de données, donc en tournant 0 dans une chaîne de caractères, vous pouvez également vous faire mal.
- Ne Table1 ont une relation avec Table2?
- Avez-vous essayer de mettre des parenthèses autour de la sous-requêtes dans les cas comme celui-ci:
WHEN (SELECT MIN(column1) FROM Table2) <> NULL
- Merci de ne pas nous narguer en disant que vous obtenez des erreurs, mais que vous ne les partagez pas. Voulez-vous vraiment mettre à jour toutes les lignes, c'est à dire pas de clause where, avec la même MinValue et MaxValue, c'est à dire pas de corrélation de la sous-requête?
Vous devez vous connecter pour publier un commentaire.
Voici quelques évidentes que les ajustements que vous devez faire:
Sinon, vous êtes effectivement en coalescence avec une
CASE
: je voudrais utiliserCOALESCE
à la place.Comment à ce sujet?
Pourquoi ne pas
Ne table1 ne détiennent que 1 ligne? Comment se fait-vous besoin d'une table pour qui? Avez-vous songé à l'aide d'un point de vue?
Aussi, pourquoi ne pas fusionner le max que bien.. juste au cas où.
Si vous devez utiliser une table...