J'essaie désespérément de créer une table finale pour une envirnment de production, mais Im ayant des problèmes ....déclaration Sql mise à jour Questions
J'ai 2 tables dans ma base de données. MyTable a exactement le même format que l'autre (AnotherTable). AnotherTable a la valeur finale que j'aimerais avoir dans MyTable.
J'essaye de mettre à jour la valeur de gq de MyTable pour égaler la valeur dans la valeur gq d'AnotherTable. Je ne peux plus utiliser AnotherTable en production, car il s'agit de données archivées ...
Ainsi, mon souci. J'ai écrit une déclaration de mise à jour (ci-dessous) qui essaie de le faire. Le problème est que je ne veux pas mettre à jour CHAQUE ligne de MyTable chaque fois que cette mise à jour est appelée. Ma seconde clause where renvoie une erreur "l'identificateur multipart ne peut pas être lié". Pourtant, j'ai besoin d'avoir la deuxième clause là-bas afin de m'assurer que je ne mets pas à jour toute la valeur de la base de données à la fois.
Aidez s'il vous plaît! Je me sens encore comme un newb
UPDATE MyTable
SET MyTable.gq=
(select top 1 ANotherTable.GQ as gq
from AnotherTable , MyTable
WHERE CONVERT(VARCHAR(MAX), AnotherTable.UniqueTextField)= MyTable.uniqueVarCharField
)
WHERE CONVERT(VARCHAR(MAX), AnotherTable. UniqueTextField)
= MyTable.uniqueVarCharField
Pourquoi cela, sélectionnez plus de lignes que nécessaire? Et comment puis-je l'obtenir pour mettre à jour uniquement les lignes que je le veux? – rockit
Vous devez filtrer sur les lignes que vous souhaitez mettre à jour, et non sur toutes les lignes correspondantes. Exemple: les tables ont-elles une clé commune? – gbn