Дубликаты с использованием различных операторов - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть таблицы ниже.

create table html_details(A int,b int,c int,d nvarchar(4))

create table pdf_details(A int,b int,c int,d nvarchar(4))

insert into pdf_details values(1,2,3,'pdf')
insert into pdf_details values(1,2,3,'pdf')
insert into pdf_details values(4,5,6,'pdf')

insert into html_details values(1,2,3,'html')
insert into html_details values(1,2,3,'html')
insert into html_details values(4,5,6,'html')

Теперь я использую запрос ниже, чтобы избежать дублирования в каждой таблице.

select distinct a,b,c,d from html_details
union all
select distinct a,b,c,d from pdf_details

, но запрос выше дает низкую производительность из-за отличной функции воба query.so я использую различные во внешнем запросе. Теперь производительность улучшена, но даст ли он одинаковый результат? Оба запроса одинаковы в логике?

select distinct a,b,c,d from (
select  a,b,c,d from html_details
union all
select a,b,c,d from pdf_details
)a

1 Ответ

0 голосов
/ 29 декабря 2018

Нет.Он не будет возвращать один и тот же вывод.

Различия в отдельных запросах приведут вас к уникальным записям из обоих запросов, а затем будут объединены.Поэтому, если в обоих результатах запросов есть похожие строки, обе они будут присутствовать в конечном результате.

Допустим, ваши данные:

Таблица 1:

1,2,3,pdf 1,2,3,pdf 1,2,3,hello

Таблица 2:

1,2,3,html 1,2,3,html 1,2,3,hello

Результатом первого подхода будет (нет четкого окончательного ответа) -

1,2,3,pdf 1,2,3,hello 1,2,3,html 1,2,3,hello

Результатом второго подхода будет (в окончательном ответе есть отличное) -

1,2,3,pdf 1,2,3,html 1,2,3,hello

Надеюсь, это объясняет.

...