0
我有一個更新語句,我想在一個語句中執行,但是我發現它有點棘手。更新子查詢中的未知列
表格記錄目標隨時間的變化。
例如,從1月1日到31日,目標可以是100,然後是從110年2月1日到28日,然後是從120年3月1日到31日,依此類推。
用戶只輸入金額和date_from。每次記錄被刪除,更新或插入新記錄後,都會重新計算每個記錄的date_to。它拾取的值是day_from最小day_from大於當前記錄的day_from的記錄的day_from前一天。既然不能想辦法讓它多一點清楚,這裏有幾個例子:
From To Amount
1st Jan 31st Jan 100
1st Feb 28th Feb 110
1st Mar 31st Mar 120
...
...
如果我插入帶有簡和值= 105 date_from 15日的記錄,我想記錄1月1日將date_to更新爲1月14日,並且插入的日期更新至1月31日
刪除2月1日的記錄將具有新插入記錄的新記錄的date_to從一月三十一日改爲三月二十八日。
我希望它解釋了我想要做的很清楚。
現在,這裏是我的SQL,這是不行的
以下回報:
錯誤代碼:1093您不能指定目標表「ptcth1」的更新在FROM子句在「where子句」
未知列「ptcth1.date_from」:
update personal_trainer_client_target_history ptcth1 set date_to =
(
select min(date_from) from personal_trainer_client_target_history ptcth2
where ptcth2.date_from > ptcth1.date_from
)
當我試圖糾正它像這樣,我得到=>錯誤代碼
update personal_trainer_client_target_history ptcth1 set date_to =
(
select date_from from
(
select min(date_from) from personal_trainer_client_target_history ptcth2
where ptcth2.date_from > ptcth1.date_from
)
as temp_table
)
任何想法?
我不敢相信我沒有想到這一點!我非常關注如何將價值放在桌面上,以至於任何其他解決方案甚至沒有跨過我的想法。非常感謝您的快速回復! – Dan