Если ноль, тогда вставьте в table_1, иначе верните table_2 в sql server - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь вставить, используя оператор if на сервере Sql, но все еще путаюсь с ним.

SELECT A.id, B.id 
FROM table_a A 
LEFT JOIN table_b B ON A.id_a = B.id_b

Будет так

    a.id         b.id
   --------------------
    1            1
    2            null

Как вставить с table_a с ненулевым значением на table_b (a.id = 1) до table_insert_1 и, если null (a.id = 2), вставить с table_a до table_insert_2?

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Для этого вам понадобятся две слегка отличающиеся команды INSERT:

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;

Первый UPDATE использует INNER JOIN для выбора только записей, которые можно найти во второй таблице. Второй использует LEFT JOIN (необязательно) с предложением WHERE, отфильтровывающим совпадающие записи.

0 голосов
/ 07 января 2019

Вы можете написать if else кейс по данному ниже.

IF ISNULL(@Id, 0)
BEGIN
"your sql statement"
END
else
BEGIN
"your sql statement"
END
0 голосов
/ 07 января 2019

Вы можете упростить это как:

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