먼저 내 테이블을 살펴보십시오.
[user_id, row_id, row_value]-테이블 : users_data
함유량:
[1, 1, 1]
[2, 1, 2]
[3, 1, 2]
[4, 1, 2]
[1, 2, 1]
[2, 2, 1]
[3, 2, 1]
[4, 2, 1]
[2, 3, 5]
[2, 3, 5]
[2, 3, 5]
MySQL 언어를 자동으로 사용해야 만 3 단계를 수행 할 수 있는지 알아보고 싶습니다.
1 단계 : row_id
user_id = 1의 목록 가져 오기 (따라서 [1, 1, 1] 및 [1, 2, 1])
2 단계 : 해당 목록을 반복하여 1 단계에서 얻은 목록에있는 row_id에 대한 가장 인기있는 row_value가 무엇인지 확인합니다.
3 단계 : 2 단계의 결과를 반복하여 user_id = 1의 row_value를 가장 인기있는 row_value와 동일하게 만듭니다.
이제 내가 만든 쿼리입니다.
1 단계:
SELECT row_id FROM users_data WHERE user_id = 1;
해당 쿼리의 결과는 2 개 행입니다.
[1]
[2]
2 단계 : 이제 2 개의 행에서 2 개의 쿼리를 실행해야합니다 (1 단계의 데이터로 채워짐).
SELECT row_id, row_value FROM users_data WHERE row_id = 1 GROUP BY row_value ORDER BY COUNT(row_value) LIMIT 1;
SELECT row_id, row_value FROM users_data WHERE row_id = 2 GROUP BY row_value ORDER BY COUNT(row_value) LIMIT 1;
첫 번째 쿼리의 결과 :
[1, 2]
두 번째 쿼리의 결과 :
[2, 1]
3 단계 : 마지막으로 그 2 개 행에서 사용자 1 row_values를 업데이트하고 싶습니다. 따라서 다음과 같이 실행해야합니다.
UPDATE users_data SET row_value = 2 WHERE user_id = 1 AND row_id = 1;
UPDATE users_data SET row_value = 1 WHERE user_id = 1 AND row_id = 2;
따라서 이러한 단계가 자동으로 수행되기를 원합니다 (2 단계에서 가져온 3 단계 데이터, 1 단계에서 가져온 2 단계 데이터).하지만 만드는 방법을 모르겠습니다 (이제 프로그래밍 언어로 작성하거나 채울 수 있습니다. 메모장으로 쿼리).
다음은 SQLFiddle의 쿼리입니다. http://sqlfiddle.com/#!9/8d5594/14
당신이 무엇을하고 있는지 확실하지 않지만 이것은 그렇게하는 것 같습니다.
UPDATE users_data u_old
JOIN (
SELECT DISTINCT u1.user_id, u2.row_id, u2.row_value
FROM users_data u1
JOIN users_data u2 USING(row_id)
WHERE u1.user_id = 1
AND u2.row_value = (
SELECT u3.row_value
FROM users_data u3
WHERE u3.row_id = u2.row_id
GROUP BY u3.row_value
ORDER BY COUNT(u3.row_value) DESC
LIMIT 1
)
) u_new USING (user_id, row_id)
SET u_old.row_value = u_new.row_value
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다