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