목표를 그룹의 모든 행을 업데이트 - 각 사용자에 대한 업데이 트 모든 레코드를 해당 사용자에 대한 첫 번째 레코드의 값으로SQLite는 : 첫 번째 행에서 값
배경 - 나는 포스트 프로덕션 데이터베이스가 (즉 내가 할 수있는 12 개월 동안의 모든 사용자 상호 작용의 로그 인 데이터 수집 방식을 변경하지 않아야합니다. 분석을 위해 각 행에 해당 사용자가 데이터베이스에서 가장 먼저 나타나는 월 (yyyy-mm)을 태그로 지정하려고합니다. 새 필드 (first_use)는 해당 사용자의 첫 번째 레코드에있는 기존 필드 (월)에서 가져옵니다.
SELECT month,user_email, MIN(month) as first_month
FROM table
GROUP BY user_email
이 나에게 테이블의 각 사용자에 대한 첫 번째 행 (첫 번째 트랜잭션)을 제공합니다 : 데이터베이스의 첫 번째 행을 선택
는쉬운 부분이다.
제 질문은 UPDATE 문을 작성하는 방법입니다. 나는 이런 식으로 뭔가를하려고 할 때 :
UPDATE table set first_use = (
SELECT MIN(month) as first_month
FROM table
GROUP BY user_email)
는 모든 first_use 필드는 같은 날짜 (테이블에있는 가장 빠른 날짜)를 포함한다. 해당 그룹의 한 달에 한 번에 한 그룹의 모든 레코드에 업데이트가 적용되도록하려면 어떻게합니까? 당신은 하위 쿼리에 의해 명시 적으로 그룹에 필요하지 않습니다
UPDATE table set first_use = (
SELECT MIN(month) as first_month
FROM table T2
where table.user_email = T2.user_email
)
:
[상관 하위 쿼리] (https://en.wikipedia.org/wiki/Correlated_subquery)를 사용하십시오. –
UPDATE 컨텍스트에서 이것을 사용하는 방법을 보여 줄 수 있습니까? – globalSchmidt