SQL ГДЕ, несколько условий ограничены для записи - PullRequest
0 голосов
/ 07 января 2020

При создании таблицы scd2 я пытаюсь определить значения IN переходной таблицы, чтобы идентифицировать записи, которые содержат одинаковые id_A и id_B на уровне записи. т.е. я не хочу, чтобы это смешивалось в матче. С этим WHERE IN logi c, компьютер смотрит на эти условия построчно?

UPDATE test_table AS a
SET a.current_record = FALSE
WHERE a.id_A IN (
        SELECT id_A
        FROM Transient_Table
        )
    AND a.id_B IN (
        SELECT a.id_B PHONE_NUMBER_TYPE
        FROM Transient_Table
        );

Ответы [ 2 ]

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

Почти все, что делает SQL - это строка за строкой. Таким образом, он переходит к первому ряду и проверяет, выполняется ли условие 1, а затем выполняется условие 2. Если ОБА удовлетворены, SQL включает строку.

Я считаю, что это правильный синтаксис для Снежинки. Не уверен, что вы можете добавить псевдонимы:

update test_table
set current_record = false
from Transient_Table
where test_table.id_A = transient_table.id_A and test_table.id_B = transient_table.id_B;
0 голосов
/ 07 января 2020

Пожалуйста, попробуйте это:

update a
  set a.current_record = FALSE -- Not sure your RDBMS honors FALSE , in SQL Server it does not. So, update this accordingly.
  from test_table as a
  join Transient_Table as t on a.id_A = t.id_A and a.id_B = t.id_B
...