簡體   English   中英

SQL Update使用同一表中其他列的值

[英]SQL Update using values from other columns in same table

我有一個SQL表“數據”,其中包含以下幾列:id(int),date1(日期時間),date2(日期時間),差異(浮點數)

我想做的就是更新此表,以便僅當date2不等於'0000-00-00 00:00:00時,“ difference”列才包含date2和date1之間的年份差異(以浮點數表示)。 '

我在想一些事情

Update data m
SET difference = datediff("hh",m.date2, m0.date1)/8765 --there are 8765 hours per year so this should give me my float
FROM data m0
WHERE m.id = m0.id
AND m.date2 <> '0000-00-00 00:00:00';

但是,當我嘗試此操作時,我收到一條錯誤消息,指出“ SQL語法錯誤。檢查MySQL服務器版本以獲取正確的語法,以使用來自'd'的近數據SET差異= datediff(“ hh,m.date2,m0.date10 / 8765)在第1行

我將如何修改我的sql語句以獲得所需的結果?

編輯:

我正在使用xampp的phpMyAdmin接口運行此sql語句

假設更新語句采用以下形式:

UPDATE table
SET column1 = expression1,
    column2 = expression2,
    ...
WHERE conditions;

因此,您的from子句無關緊要。

您可以使用joins和子select查詢來鏈接到其他表。

-有關如何實現該目標的出色演示 (實際上是一個完整的副本):

UPDATE TABLEA a 
JOIN TABLEB b ON a.join_colA = b.join_colB  
SET a.columnToUpdate = [something]

我想通了,這要感謝諾伯特的建議

我用了

update data m, data m0
set m.difference = datediff(date(m.date2),date(m0.date2))/365
where m.id = m0.id
and m.date2 <> '0000-00-00 00:00:00';

我為mysql datediff使用了錯誤的語法,該語法將2個日期作為參數並返回以天為單位的差額。

嘗試使用以下語法更新多個表:

Update data m, data m0
SET m.difference = datediff("hh",m.date2, m0.date1)/8765 
WHERE m.id = m0.id
AND m.date2 <> '0000-00-00 00:00:00';

請注意,在SET語句中,您還需要指出要更新的表,否則仍會給您一個很好的警告。

暫無
暫無

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

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