簡體   English   中英

使用同一表SQL中的日期更新列

[英]Update columns with date from the same Table sql

我有這個表結構

id | value
---|----------
1  |  0.2
2  |  0.3
3  |  0.5
4  |  0.25
5  |  0.37
6  |  0.56
7  |  
8  |  
9  |  

現在我想用id = 2到5之間的值來更新最后3個元素的值,我這樣做是因為聽起來很簡單

UPDATE table AS z0
SET value = z1.value
FROM table as z1
WHERE z1.id BETWEEN 2 AND 5
AND z0.id BETWEEn 7 AND 9

但是結果是這樣的,只是取范圍(id = 2)中的第一個元素的值

 id | value
    ---|----------
    1  |  0.2
    2  |  0.3
    3  |  0.5
    4  |  0.25
    5  |  0.37
    6  |  0.56
    7  |  0.3
    8  |  0.3
    9  |  0.3

這樣行嗎?

update table 
    set value = (select value
                 from table t2
                 where id between 2 and 5
                 order by random()
                 limit 1
                )
    where value is null;

las,上面的方法行不通(盡管我認為應該如此)。 問題在於子查詢僅被執行一次。 此版本可以正常工作:

update table t
    set value = (select value
                 from table t2
                 where id between 2 and 5 and t2.id <> t.id
                 order by random()
                 limit 1
                )
    where value is null;

相關子句阻止只運行一次查詢的優化。 是一個SQL Fiddle,它演示了邏輯。

你可以用這個

 UPDATE table AS z0
 SET value = z1.value
 FROM table as z1
 WHERE z1.id = (z0.id - 4)
 AND z0.id BETWEEn 7 AND 9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM