У меня запрос
UPDATE Table_1 SET Col1='Y' WHERE ROWID IN (
select ROWID from (
SELECT BUS_ID,
row_number() over (partition by BUS_ID order by BUS_ID) dupe_count,
rowid
from Table_1
WHERE col2 <> 1
AND col3 <> 1
order by dbms_random.value
) ft
where ft.dupe_count = 1
AND ROWNUM <= 1000
);
обновляет только 1000 строк в таблице Table_1.
Но если я пишу
UPDATE Table_1 SET Col1='Y' WHERE ROWID IN (
select ROWID from (
SELECT BUS_ID,
row_number() over (partition by BUS_ID order by BUS_ID) dupe_count,
rowid
from Table_1
WHERE col2 <> 1
AND col3 <> 1
order by dbms_random.value
) ft
where ft.dupe_count = 1
and Table_1.BUS_ID = ft.BUS_ID
AND ROWNUM <= 1000
);
, обновляются все строки таблицы.независимо от RoWNUM <= 1000
, т.е. если я добавлю
Table_1.BUS_ID = ft.BUS_ID
, то он обновит все строки, которые удовлетворяют col2<> 1 AND col3<> 1 and ft.dupe_count=1
.Таблица имеет следующую структуру:
BUS_ID | col1 | col2 | col3
1 | | 0 | 0
2 | | 0 | 0
1 | | 0 | 0
3 | | 1 | 1.
Любая идея, почему это происходит. Пожалуйста, помогите.