是否有在MySQL執行更新當且僅當該值在我的行被分配到列X是大於或等於給相同的列優雅的溶液X的另一個值(特定)行?條件UPDATE如果NEW_VALUE <= value_from_different_row
我使用的是表2列作爲一個關鍵=>值店,我有這樣的事情:
key | value --------------------------- period_a_begin | 2014-01-01 period_a_end | 2014-01-15 period_b_begin | 2014-01-20 period_b_end | 2014-02-15
我怎樣才能確保對於period_a_end新值大於或等於到period_a_begin值的值且小於或等於說我用它來更新period_a_end相同的SQL查詢period_b_begin的價值?
我使用子查詢嘗試過,但沒有成功:
UPDATE configtable SET configtable.value=:myvalue WHERE configtable.key="period_a_end" AND :myvalue >= (SELECT configtable.value FROM configtable WHERE configtable.key = "period_a_begin") AND :myvalue <= (SELECT configtable.value FROM configtable WHERE configtable.key = "period_b_begin");
我不斷收到以下錯誤:
You can't specify target table configtable for update in FROM clause
雖然我明白爲什麼這個錯誤彈出,我無法找到找到一種方法來完成這項工作,而無需從我準備好的聲明中刪除整個支票。 :/
任何想法?
謝謝,但不僅僅是這不優雅,我也不確定MySQL服務器的這種行爲是不是可以被視爲一個錯誤(因此在未來一段時間內會被修復/更改。) – user3485397
@ user3485397。 。我可以體會到缺乏優雅的,但我不知道你的「錯誤」部分的意思。有或無子查詢的附加層的查詢是標準的SQL。需要第二層得到解決的錯誤在當前的MySQL實現中。 –