как выбрать отдельные значения из 2 таблиц в sql - PullRequest
0 голосов
/ 18 февраля 2020

table1

id 
1 
2 
3 
4  
5             

table2

id 
4 
5 
6 
7 
8

Я хочу привести таким образом:

id  
1
2
3
6
7
8

Ответы [ 5 ]

3 голосов
/ 18 февраля 2020

Вот один из способов сделать это в MySQL, используя union all и not exists:

select t1.id
from table1 t1
where not exists (select 1 from table2 t2 where t2.id = t1.id)
union all
select t2.id
from table2 t2
where not exists (select 1 from table1 t1 where t1.id = t2.id)

Демонстрация на DB Fiddle :

| id |
| -: |
|  1 |
|  2 |
|  3 |
|  6 |
|  7 |
|  8 |
0 голосов
/ 18 февраля 2020

Это может работать быстрее, чем решение GMB.

select table1.id
from table1 left join table2 on table1.id = table2.id
where table2.id IS NULL
union all
select table2.id
from table2 left join table1 on table1.id = table2.id
where table1.id IS NULL
0 голосов
/ 18 февраля 2020

попробуйте следующее

select distinct id from (
    select id from table 1
    union 
    select id from table 2
)
0 голосов
/ 18 февраля 2020

вы можете использовать

DISTINCT

ваш пример:

SELECT DISTINCT id from  table1 a, table2 b where a.id =b.id
0 голосов
/ 18 февраля 2020

Вы можете написать свой запрос следующим образом.

select coalesce(id1, id2) as id
from (
    select t1.id as id1
        ,t2.id as id2
    from table1 t1
    left join table2 t2 on t1.id = t2.id

    union

    select t1.id as id1
        ,t2.id as id2
    from table1 t1
    right join table2 t2 on t1.id = t2.id
    ) T
where t.id1 is null
    or t.id2 is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...