Vorrei applicare il valore di una colonna nell'ennesima riga della mia tabella a tutte le righe della tabella. È possibile solo in PostgreSQL?
risposte:
3 per risposta № 1select *
from <<TABLE>>
limit 1 offset <N>
Modifica: Siamo spiacenti, hai letto male il tuo messaggio. Non avevo capito che anche tu avessi bisogno di un aggiornamento.
UPDATE <<TABLE1>>
SET <<COLUMN1> = (SELECT <<COLUMN2>> FROM <<TABLE2>> limit 1 offset <<N>>)
0 per risposta № 2
Se non avessi accesso in scrittura, potresti farloqualcosa con le funzioni della finestra. Questo potrebbe probabilmente essere semplificato o ampliato (in particolare con il modo in cui prende "n", a seconda del caso d'uso). Sfortunatamente, non è possibile avere funzioni di finestra all'interno di funzioni di finestra.
create temp table test(val numeric);
insert into test select * from generate_series(101,200,1);
select max(case when rn = n then val else null end) over () as nthvalue, val
from(
select row_number() over (order by val) as rn, val, n
from (select val, 9 as n from test) as added_n) as obtained_rownum;