例を使用して説明しようとする一般的な質問があります。
「id」、「name」、「category」、「appearance」、「ratio」のフィールドを持つテーブルがあるとします。
アイデアは、複数のアイテムがあり、それぞれが単一のカテゴリに関連し、複数回「表示」されるというものです。比率フィールドには、カテゴリ内のアイテムの総出現数に対する各アイテムの出現率を含める必要があります。
疑似コードで必要なのは次のとおりです。
各カテゴリについて
、それに関連するアイテムの出現回数の合計を見つけます。たとえば、 (select sum("appearances") from table group by category
)で実行できます。各アイテム
の比率の値を、アイテムの外観を上記のカテゴリで見つかった合計で割った値として設定します
今、私は単一の更新クエリでこれを達成しようとしていますが、それができないようです。私がやるべきだと思ったのは:
update Table T
set T.ratio = T.appearances /
(
select sum(S.appearances)
from Table S
where S.id = T.id
)
しかし、MySQL は update 列でエイリアス T を受け入れません。これを実現する他の方法は見つかりませんでした。
何か案は?