1
votes

Si nul, insérez dans table_1 sinon retournez table_2 dans le serveur SQL

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 ?


0 commentaires

3 Réponses :


0
votes

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);


0 commentaires

0
votes

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.


4 commentaires

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.



0
votes

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


0 commentaires