programing

MySQL/MariaDB는 COUNT(*)를 방정식에 포함시킵니다.

goodsources 2022. 10. 1. 15:33
반응형

MySQL/MariaDB는 COUNT(*)를 방정식에 포함시킵니다.

테이블이나 열의 행 수를 구하여 방정식 안에 값을 배치하려고 합니다.

UPDATE myTable 
SET myCalculatedColumn = COUNT(*) / (@rownum:= 1 + @rownum)
WHERE 0 = (@rownum:=0)

안타깝게도 오류 1111 "Invalid use of group function" 이 표시됩니다.또, 다음과 같이 했습니다.

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(*)어떤 테이블에서 셀지

SET @c = (SELECT COUNT(*) FROM myTable);
SET @rownum = 0;
UPDATE myTable 
SET myCalculatedColumn = @c / (@rownum:= 1 + @rownum);

에 할당하는 순서는myCalculatedColumn제멋대로이고 예측불허일 수 있습니다.ORDER BY절을 클릭합니다.

언급URL : https://stackoverflow.com/questions/67715546/mysql-mariadb-place-count-in-equation

반응형