Интересно, можно ли использовать rowid для сопоставления строк?безопасно выполнять select by rowid
Я следующий запрос:
select * from a,
(select a.rowid rid, <some_columns_omitted> from a, b, c where a.some_column = b.some_column ... <joining_omitted>
union all
select a.rowid rid, <some_columns_omitted> from a, d, e where a.some_column = d.some_column ... <joining_omitted>
union all ....) sub_query
where a.rowid = sub_query.rid
ли с помощью rowid
для сравнения строк быть в безопасности, как с использованием первичного ключа?
его странный запрос честно. Скорее всего, вы также вернете дубликаты, так как вы делаете союз в суб-запросе (у суб-запроса, скорее всего, будет несколько строк одного и того же rowid). Объединение или использование IN решат это, но попробовали ли вы просто подключиться к другим таблицам по мере необходимости? – tbone
@tbone, я использую такой запрос, потому что мне нужны данные из других таблиц, например. 'D'. Нет дубликатов из-за условий в подзапросах, они не совпадают с дубликатами. Я не могу переместить союз из подзапроса, потому что в реальном запросе мне нужно заблокировать данные, и я использую предложение 'for update', которое не работает с объединением –