簡體   English   中英

根據另一個查詢的 ORDER 更新列值

[英]Update column value based on ORDER of another query

我擁有的:

大家好,我有兩張桌子。

#1 model我存儲所有模型的地方

+---------------+---------+
| id | name     |  order  |
+---------------+---------+
|  1 | Model #1 |   null  |
|  2 | Model #2 |   null  |
|  3 | Model #3 |   null  |
|  4 | Model #4 |   null  |
+---------------+---------+

#2 video_models_model連接modelvideo表(視頻現在不相關)

+---------+---------+
| videoId | modelId |
+---------+---------+
|     1   |    1    |
|     2   |    1    |
|     3   |    1    |
|     4   |    2    |
|     5   |    2    |
|     6   |    3    |
+---------+---------+

直到現在,當我需要模型時,我總是根據它們在視頻中使用的數量來訂購它們

SELECT * FROM model ORDER BY (
  SELECT COUNT(*) FROM video_models_model WHERE modelId = model.id
) DESC;

我需要的:

但是我發現有時我需要手動更改某些模型的位置。 因此,我創建了新列 `order` 並將使用它來訂購東西而不是上面的查詢。 然而,事實上在 99% 的情況下,一切都將保持原樣,直到現在有沒有辦法使用上面的查詢來更新“訂單”列?

換句話說,我需要一些查詢來在model表中創建它。

 +---------------+---------+ | id | name | order | +---------------+---------+ | 1 | Model #1 | 4 | | 2 | Model #2 | 3 | | 3 | Model #3 | 2 | | 4 | Model #4 | 1 | +---------------+---------+

您可以使用相關子查詢:

update model
set `order` = (
    select count(*) from video_models_model vmm where vmm.modelid = model.id
)

側節點: orderMySQL 中的保留字,因此列名的選擇很糟糕(您需要在任何使用它的地方用反引號將其括起來)。

暫無
暫無

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

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