Вам, вероятно, нужно использовать селектор x $ jQuery, поскольку ваши идентификаторы содержат двоеточия: https://openntf.org/XSnippets.nsf/snippet.xsp?id=x-jquery-selector-for-xpages [ 110].
После двух полученных мной ответов (ни один из которых не был полным, поэтому я написал свой собственный), в конечном итоге я сделал следующее:
UPDATE Table AS target
INNER JOIN
(
select category, appearances_sum
from Table T inner join (
select category as cat, sum(appearances) as appearances_sum
from Table
group by cat
) as agg
where T.category = agg.cat
group by category
) as source
ON target.category = source.category
SET target.probability = target.appearances / source.appearances_sum
Он работает очень быстро. Я также пробовал использовать коррелированный подзапрос, но он был намного медленнее (на несколько порядков), поэтому я придерживаюсь соединения.
Вот как это делается в mssql, я думаю, что mysql такой же или похожий:
create table T (id int, ratio float, appearances int)
insert T values (1, null, 2)
insert T values (1, null, 3)
update T
set ratio = cast(appearances as float)/ agg.appearancesSum
from T join (
select id, sum(appearances) as appearancesSum
from T
group by id
) as agg on t.id = agg.id
Использовать объединения сразу после UPDATE: Справочное руководство - 13.2.11 Синтаксис UPDATE
, поэтому ОБНОВЛЕНИЕ table1 внутреннего соединения table2 на .... установить table1.foo = значение где table2.bla = someothervalue
В таких случаях всегда смотрите руководство. MySql имеет надлежащее справочное руководство, поэтому найти правильный синтаксис не должно быть так сложно;)