MySQL / MariaDB 在等式中放置 COUNT(*)
MySQL / MariaDB place COUNT(*) in equation
我正在尝试获取 table 或列中的行数,并将该值放入方程式中,如下所示:
UPDATE myTable
SET myCalculatedColumn = COUNT(*) / (@rownum:= 1 + @rownum)
WHERE 0 = (@rownum:=0)
不幸的是,我收到错误 1111“无效使用群组功能”。我也试过:
SET @c = COUNT(*);
UPDATE myTable
SET myCalculatedColumn = @c / (@rownum:= 1 + @rownum)
WHERE 0 = (@rownum:=0)
但这会产生同样的错误。
如何将 COUNT(*)
(或编程上等效的运算)放入方程中?
加入一个获取计数的子查询。您也可以在那里初始化 @rownum
变量。
UPDATE myTable AS t
CROSS JOIN (SELECT COUNT(*) AS count, @rownum := 0 FROM myTable) AS c
SET myCalculatedColumn = count / (@rownum := 1 + @rownum)
如果不想做交叉连接,可以在设置的时候使用子查询@c
。你只需要告诉 COUNT(*)
从什么 table 算起。
SET @c = (SELECT COUNT(*) FROM myTable);
SET @rownum = 0;
UPDATE myTable
SET myCalculatedColumn = @c / (@rownum:= 1 + @rownum);
请注意,它分配给 myCalculatedColumn
的顺序将是任意的且不可预测的table,除非您也有一个 ORDER BY
子句。
我正在尝试获取 table 或列中的行数,并将该值放入方程式中,如下所示:
UPDATE myTable
SET myCalculatedColumn = COUNT(*) / (@rownum:= 1 + @rownum)
WHERE 0 = (@rownum:=0)
不幸的是,我收到错误 1111“无效使用群组功能”。我也试过:
SET @c = COUNT(*);
UPDATE myTable
SET myCalculatedColumn = @c / (@rownum:= 1 + @rownum)
WHERE 0 = (@rownum:=0)
但这会产生同样的错误。
如何将 COUNT(*)
(或编程上等效的运算)放入方程中?
加入一个获取计数的子查询。您也可以在那里初始化 @rownum
变量。
UPDATE myTable AS t
CROSS JOIN (SELECT COUNT(*) AS count, @rownum := 0 FROM myTable) AS c
SET myCalculatedColumn = count / (@rownum := 1 + @rownum)
如果不想做交叉连接,可以在设置的时候使用子查询@c
。你只需要告诉 COUNT(*)
从什么 table 算起。
SET @c = (SELECT COUNT(*) FROM myTable);
SET @rownum = 0;
UPDATE myTable
SET myCalculatedColumn = @c / (@rownum:= 1 + @rownum);
请注意,它分配给 myCalculatedColumn
的顺序将是任意的且不可预测的table,除非您也有一个 ORDER BY
子句。