簡體   English   中英

來自子查詢中同一表的MySQL UPDATE和SELECT

[英]MySQL UPDATE and SELECT from same table in subquery

首先,我知道從M​​ySQL 5.1.x開始這是不可能的,它在這里這樣說:

http://dev.mysql.com/doc/refman/5.1/en/update.html

我要問的是,是否有一種聰明的方法可以使用臨時表/視圖執行查詢,而不必借助編寫快速腳本來完成工作。 我的查詢(完全錯誤並且無法正常工作,僅供在家里嘗試的人參考)看起來像這樣:

UPDATE some_table 
set some_col = ( SELECT some_othercol 
                 from some_table 
                 WHERE some_col > some_othercol
               );

如果sol_col > some_othercol我試圖最終將some_col設置為some_othercol的值。

不借助腳本來處理此問題的最佳方法是什么?

編輯我的子查詢返回多個行!

我不太了解為什么需要子查詢。 這不是您想要的嗎?:

UPDATE some_table 
SET some_col = some_othercol 
WHERE some_col > some_othercol

我不確定這是否正是您要嘗試的方法,但是也許我可以向您展示一些東西,以使您走上正確的道路。

UPDATE some_table ST
SET some_col = (
    SELECT some_col
    FROM some_table OT
    WHERE OT.ID = ST.ID
)
WHERE ST.some_col > 2

這會將some_col設置為其自己的值,但是僅當some_col已經大於2時。我知道這不會做任何事情,但是它顯示的概念可能更接近您想要的內容。 如果您最后給出了一些詳細信息,我可能會幫助您找到更接近您需要的解決方案。

暫無
暫無

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

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