1
我有一個item
表,它具有字段item_id
,priority
和一堆其他字段。我也有一個item_priority
表,它有兩個字段:item_id
和priority
。並非item
表中的每個項目都有item_priority
中的匹配記錄。備用值加入更新
我想更新item
表來根據item_priority
表設置優先級。對於所有沒有匹配的項目,我希望priority
爲-1。
我可以運行以下命令:
update item set priority = -1
和
update item
join item_priority on item.item_id = item_priority.item_id
set item.priority = item_priority.priority
這將讓我我需要什麼。但是有沒有辦法在單個查詢中執行此操作?
注意:我知道這個設計並不是最優的,但是它必須以這種方式出於不同的原因。我想要的只是在單個查詢中完成此操作,而無需重新設計表格。
一個快速編輯。 '加入'需要更改爲'左連接' – Daniel
對不起,我撤回了我接受的答案 - 即使對於數千個項目,查詢也非常慢。我不想給別人錯誤的印象,認爲這有效。我給你+1幫助。謝謝。 – stepanian
只是跑了一個測試。我的項目有1261568個條目最初設置爲優先級5000。我的item_priority表有4948個非連續的item_id和具有隨機值的優先級。 我的第一個查詢需要15秒。第二秒實際上是26秒慢。 3.3GHz 2核cpu。 我會很高興看到有人提出了比上面第一個查詢更快的內容。你的CPU比較如何? – Daniel