prosource

mysql에서 UPDATE를 수행하는 동안 여러 행에서 고유한 값을 설정하는 방법

probook 2023. 8. 6. 10:11
반응형

mysql에서 UPDATE를 수행하는 동안 여러 행에서 고유한 값을 설정하는 방법

열이 여러 개 있는 테이블이 있습니다.각 행에 대한 연결을 알려주는 유일한 방법은 session_id입니다.
제 목표는 나이란을 난수로 업데이트하는 것입니다.
그래서 나는 다음 질문을 사용했습니다.

UPDATE userdata
SET age = (FLOOR(18 + RAND() * 62))
WHERE session_id IN 
(
    SELECT session_id FROM
    (
        SELECT DISTINCT session_id
        FROM userdata
    ) AS temp
)

이는 정상적으로 작동하지만 모든 고유 session_id에는 여전히 여러 행이 있고 기간 값은 서로 다릅니다.이 쿼리가 수행해야 하는 작업을 수행한다는 것을 알고 있지만 동일한 session_id를 가진 각 행에 대한 고유한 연령 값을 가져오려면 어떻게 쿼리를 변경해야 합니까?

예.

session_id  |  age
1              25
2              35
2              35
3              51
3              51
3              51

스택 오버플로 질문은 처음이니 미리 감사드리며 친절하게 대해주시기 바랍니다.

사용해 보십시오.

update userdata
inner join (select *, (FLOOR(18 + RAND() * 62)) as age2 from userdata group by session_id) T ON T.session_id = userdata.session_id
set userdata.age = T.age2

이것은 잘못된 방향으로 보입니다.session_id가 고유하지 않은 것 같습니다(언제가 좋을까요?). 이것을 수정할 수 있는 첫 번째 방법입니다.따라서 이를 기반으로 고유한 열을 생성하려고 합니다.하지만 당신이 올바르게 지적한 것처럼 세션 ID를 기반으로 새 번호를 만들 수 없습니다. 동일하기 때문입니다.가장 확실한 솔루션은 자동 증분 열을 추가하는 것입니다.

AGENT(11) PRIMARY KEY AUTO_INCREMENT 추가 테이블 이름 변경;

언급URL : https://stackoverflow.com/questions/58220926/how-to-set-unique-values-in-multiple-rows-while-doing-update-in-mysql

반응형