Есть две таблицы, tableGeneral
и tableRef
. Сначала я сделал новый table1
из tableGeneral
и сделал левое соединение с tableRef
, когда поля spec
были одинаковыми. Затем я посчитал pk_num
, который был добавлен после присоединения, и это было 9200 записей.
Во-вторых, я создал table2
из tableGenral
. Затем я добавил столбец и произвел обновление для table2
с помощью подзапроса, выбрав pk_num
, где спецификация была такой же, как в table2
. В результате 6900 записей после подсчета f_num
!
Я сделал count(distinct(...))
для обоих.
p.s. Более того, pk_num
уникален, и использование min
в подзапросе произошло только из-за дублированных строк с одинаковым pk_num
. Таким образом, это не влияет на результат.
постскриптум мои таблицы недостаточно малы, чтобы их можно было сюда включить.
первый запрос:
create table table1 as
(
select a.ID, a.spec, b.pk_num from tableGeneral a
left join tableRef b
on upper(a.spec)=upper(b.spec)
group by a.ID, a.spec, b.pk_num);
второй запрос:
create table table2 as
(
select ID, spec
from tableGeneral
);
alter table table2
add f_num VARCHAR(100);
update table2 a
set f_num=null;
update table2 a
set a.f_num=(select /*+parallel(12)*/ min(b.pk_num)
from tableRef b
where upper(a.spec)=upper(b.spec));
Я думаю, что они должны показывать тот же результат, когда я считаю, но они этого не сделали, и я не могу понять, почему это произошло! пожалуйста, помогите мне?