J'essaie d'insérer en utilisant l'instruction if
dans le serveur SQL, mais je suis toujours confus.
a.id b.id -------------------- 1 1 2 null
Ce sera comme ça
SELECT A.id, B.id FROM table_a A LEFT JOIN table_b B ON A.id_a = B.id_b
Comment insérer depuis table_a
sans nul sur table_b
( a.id = 1
) à table_insert_1
et si null
( a.id = 2 code >) insérer de
table_a
à table_insert_2
?
3 Réponses :
Vous pouvez simplifier cela comme:
INSERT INTO table_insert_1 (COL1, . . . ) SELECT A.Col1, . . . FROM table_a A WHERE EXISTS (SELECT 1 FROM table_b B WHERE B.id_b = A.id_a); INSERT INTO table_insert_2 (COL1, . . . ) SELECT A.Col1, . . . FROM table_a A WHERE NOT EXISTS (SELECT 1 FROM table_b B WHERE B.id_b = A.id_a);
Vous avez besoin de deux commandes INSERT
légèrement différentes pour cela:
INSERT INTO table_insert_1 SELECT A.id, B.id FROM table_a A INNER JOIN table_b B ON A.id_a = B.id_b WHERE A.id = 1; INSERT INTO table_insert_2 SELECT A.id, B.id FROM table_a A LEFT JOIN table_b B ON A.id_a = B.id_b WHERE B.id IS NULL A.id = 1;
La première UPDATE
utilise un INNER JOIN code> pour sélectionner uniquement les enregistrements qui peuvent être trouvés dans le deuxième tableau. Le second utilise un
LEFT JOIN
(facultatif), avec une clause WHERE
qui filtre les enregistrements correspondants.
Ils ressemblent à des insert
s pour moi.
@DamienTheUnbeliever: merci d'avoir repéré la faute de frappe, corrigé!
Donc je ne peux pas faire ça avec une seule requête?
@TsabitAAziz: parce que vous devez insérer dans deux tables différentes, vous avez donc besoin de deux instructions.
Vous pouvez écrire la casse sinon
par ce qui suit.
IF ISNULL(@Id, 0) BEGIN "your sql statement" END else BEGIN "your sql statement" END