объединение двух таблиц - пересечение двух таблиц - PullRequest
2 голосов
/ 15 января 2012

У меня есть следующие таблицы:

 A   B                       A   B
 _____                       _____
 1   t                       7   a
 2   r                       5   d
 3   e                       3   e
 4   f                       9   a
 5   d                       10  c
 6   s                       11  a
 7   a

И вывод должен быть;Я могу сказать только с эту цифру , посмотрите.Я хочу (Союз B).Как я могу это сделать?

Ответы [ 6 ]

4 голосов
/ 15 января 2012

Этот запрос сделает это. Он загружает все записи из обеих таблиц, а затем отображает все те, которые существуют однажды

SELECT
  A, B
FROM
  (SELECT A, B FROM TABLE1
   UNION ALL
   SELECT A, B FROM TABLE2)
  AS COMBINED
GROUP BY
  A, B
HAVING
    COUNT(*) = 1
ORDER BY A;
1 голос
/ 15 января 2012
SELECT f.A, f.B
FROM firstTable f
LEFT JOIN secondTable s ON (f.A = s.A)
WHERE (s.A IS NULL)
UNION
SELECT s.A, s.B
FROM firstTable f
RIGHT JOIN secondTable s ON (f.A = s.A)
WHERE (f.A IS NULL)
0 голосов
/ 15 января 2012

Редактировать Удалено предыдущее «решение», так как я понял, что оно такое же, как предложенное Гэри.

(select a, b from table_1 minus 
 select a, b from table_2)       union
(select a, b from table_2 minus 
 select a, b from table_1);

Это похоже на работу со следующими данными в Oracle:

create table table_1 (
  a number,
  b varchar(2)
);

create table table_2 (
  a number,
  b varchar(2)
);


insert into table_1 values  (1  ,'t');
insert into table_1 values  (2  ,'r');
insert into table_1 values  (3  ,'e');
insert into table_1 values  (4  ,'f');
insert into table_1 values  (5  ,'d');
insert into table_1 values  (6  ,'s');
insert into table_1 values  (7  ,'a');

insert into table_2 values  (7  ,'a');
insert into table_2 values  (5  ,'d');
insert into table_2 values  (3  ,'e');
insert into table_2 values  (9  ,'a');
insert into table_2 values  (10 ,'c');
insert into table_2 values  (11 ,'a');
0 голосов
/ 15 января 2012
SELECT A, B
FROM Table1

UNION

SELECT A, B
FROM Table2

EXCEPT

SELECT t1.A, t1.B
FROM Table1 t1
  INNER JOIN Table2 t2 ON t1.A = t2.A AND t1.B = t2.B
0 голосов
/ 15 января 2012
SELECT iResult.* 
FROM
    (SELECT A, B
    FROM tableA
    WHERE A NOT IN
        (SELECT Distinct A FROM tableB)
    UNION
    SELECT A, B
    FROM tableB
    WHERE A NOT IN
        (SELECT Distinct A FROM tableB)) as iResult
0 голосов
/ 15 января 2012

Просто

SELECT a, b FROM table1 UNION SELECT a, b FROM table2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...