Сравните две таблицы и верните строки с разными значениями - PullRequest
0 голосов
/ 17 января 2019

У меня две идентичные таблицы, в основном данные будут одинаковыми

Table 1
-------------------------------
     C1    C2    C3    C4    C5
R1   1     2     3     4     5
R2   6     7     8     9     10

Table 2
-------------------------------
     C1    C2    C3    C4    C5
R1   1     2     3     4     5
R2   6     17    18    9     10
R3   11    12    13    14    15
R4   16    17    18    19    20

Может кто-нибудь помочь мне при написании запроса сравнить две таблицы, получить R3, R4 в наборе результатов, а также получить строки, которые имеют различия в значениях столбцов, такие как C2R2, C3R2

1 Ответ

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

Предполагая, что первый столбец (столбец со значениями R1, R2 и т. Д.) Имеет имя row (вы не говорите):

select row, 'Not present in table 2' as difference
from table_1
where row not in (select row from table_2)
union all
select row, 'Not present in table 1'
from table_2
where row not in (select row from table_1)
union all
select
  t1.row,
  concat(
    case when t1.c1 <> t2.c1 then 'c1 ' end,
    case when t1.c2 <> t2.c2 then 'c2 ' end,
    case when t1.c3 <> t2.c3 then 'c3 ' end,
    case when t1.c4 <> t2.c4 then 'c4 ' end,
    case when t1.c5 <> t2.c5 then 'c5 ' end
  )
from table_1 t1
join table_2 t2 on t1.row = t2.row
where t1.c1 <> t2.c1
   or t1.c2 <> t2.c2
   or t1.c3 <> t2.c3
   or t1.c4 <> t2.c4
   or t1.c5 <> t2.c5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...