SQL - поиск всех строк с разными значениями в столбце для того же значения в другом столбце при объединении двух таблиц - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть две таблицы MS Access Table 1 и Table 2, где меня интересуют значения в Col1, Col2 и Col3, где Col2 может быть пустым.Используя SQL, я хочу иметь возможность объединить обе таблицы, исключить дубликаты и найти все строки, для которых непустые значения Col2 отличаются для одного и того же значения в Col3.

Пример для комбинированногодве таблицы без пустых значений в Col2

+-----------+---------+---------+
|    Col1   |  Col2   |  Col3   |
+-----------+---------+---------+
| James     | bar     | 3       |
| Bob       | red     | 2       |
| Jess      | red     | 3       |
| Don       | foo     | 1       |
| James     | bar     | 1       |
| Mike      | red     | 3       |
| Paula     | foo     | 4       |
| Paula     | red     | 2       |
| Tom       | red     | 2       |
+-----------+---------+---------+

дали бы:

+-----------+---------+---------+
| James     | bar     | 3       |
| Jess      | red     | 3       |
| Mike      | red     | 3       |
| Don       | foo     | 1       |
| James     | bar     | 1       |
+-----------+---------+---------+

Чтобы объединить таблицы и устранить дубликаты, где Col2 не пусто, я могу использовать:

SELECT [Col1], [Col2], [Col3]
FROM [Table 1]
WHERE [Col2] <> ''
UNION ALL
SELECT [Col1], [Col2], [Col3]
FROM [Table 2]
WHERE [Col2] <> ''
GROUP BY [Col1], [Col2], [Col3]

Используя результат вышеприведенного оператора, я хотел бы знать, какой оператор SELECT должен использоваться для достижения того, что я хочу.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы, кажется, хотите exists:

select distinct t.*
from table1 as t
where t.col2 is not null and
      exists (select 1
              from table1 as t2
              where t2.col3 = t.col3 and t2.col2 <> t.col2
             );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...