다음 표가 있는데 다음 쿼리로 ref 열 값을 늘리려고합니다.max가 작동하지 않는 내부 조인
orderid name age address ref
1 A 22 a1 1
2 B 21 b1 0
update table1
set ref =
'(SELECT (MAX(ref) + 1) AS max_ref FROM table1)'
where name= 'B'
는하지만 항상 0 대신
2. 경우 감사로 설정합니다.
다음 표가 있는데 다음 쿼리로 ref 열 값을 늘리려고합니다.max가 작동하지 않는 내부 조인
orderid name age address ref
1 A 22 a1 1
2 B 21 b1 0
update table1
set ref =
'(SELECT (MAX(ref) + 1) AS max_ref FROM table1)'
where name= 'B'
는하지만 항상 0 대신
2. 경우 감사로 설정합니다.
시도 :
UPDATE `table1`
SET `ref` = (
SELECT `cur_ref` FROM(
SELECT MAX(`ref`)+1 `cur_ref` FROM `table1`
) `calc_table`
) WHERE `name` = 'B'
MySQL doc에 따르면
현재, 테이블 을 업데이트하고 하위 쿼리에서 같은 테이블에서 선택할 수 없습니다. 그것은 쉽게 그러나
는 우회 : 당신은 SQL 문을 포함하는 문자열에 정수 열 ref
을 설정하는 것처럼
UPDATE table1
SET ref = (
SELECT m.max_ref FROM (
SELECT (max(ref) + 1) AS max_ref FROM table1) m)
WHERE name= 'B'
것 같습니다 :
set ref = '(SELECT (MAX(ref) + 1) AS max_ref FROM table1)'
MySQL의 변환을 시도합니다 해당 문자열을 정수로 끝내면 0으로 끝납니다.
올바른 방법은 ''
따옴표를 생략하는 것입니다. es를 사용하면 새로운 문제가 생길 수 있습니다. MySQL은 동일한 테이블에서 업데이트하고 선택할 수 없도록합니다. 당신은 다른 해답에서 그 해결책을 찾을 수 있습니다.
정말 표현을 인용하고 있습니까? 나는 MySQL을 모른다. 그러나 이것은 정말로 이상하게 보일 뿐이다 (그리고 다른 DBMS에서는 수행되어서는 안된다) – erikkallen