我在数据库中插入了一个新列,并希望填充数据。它应根据nom_arr_time
的值与上一行nom_dep_time
的值之差来计算。
如果我尝试执行SELECT语句,则一切正常。但是更新无法正常进行,该列保持空白。
UPDATE mobile_statistik
SET nom_fahrzeit = (SELECT nom_arr_time - LAG(nom_dep_time,1,0) OVER (ORDER BY id)
FROM mobile_statistik);
由于大小约为ca,因此无法通过python之类的编程语言处理任务。 20GB的数据库。
答案 0 :(得分:0)
您可以这样做:
UPDATE mobile_statistik
SET nom_fahrzeit = (
SELECT t.nom_arr_time - t.prev FROM (
SELECT id, nom_arr_time, LAG(nom_dep_time,1,0) OVER (ORDER BY id) prev
FROM mobile_statistik
) t
WHERE t.id = mobile_statistik.id
)
或不包含LAG()
:
UPDATE mobile_statistik
SET nom_fahrzeit =
nom_arr_time - (
SELECT m.nom_dep_time
FROM mobile_statistik m
WHERE m.id = (SELECT MAX(t.id) FROM mobile_statistik t WHERE t.id < mobile_statistik.id)
);