source

동일한 표의 다른 열의 데이터와 일치하도록 열을 업데이트하는 방법

gigabyte 2022. 9. 4. 15:27
반응형

동일한 표의 다른 열의 데이터와 일치하도록 열을 업데이트하는 방법

parent_id 행을 갱신하고 parent_id와 동일한 member_id를 가진 대응하는 사용자 이름을 반영하기 위한 쿼리를 실행하려고 합니다.

다음은 db_name.members 테이블을 나타낸 것입니다.parent_ids를 대응하는 사용자 이름으로 변환하고 싶습니다.

+--------+----------+-----------+-----------+
|  name  | username | member_id | parent_id |
+--------+----------+-----------+-----------+
| Jeff   | Jeff     |       167 | NULL      |
| Asia   | Asia     |       143 | NULL      |
| Bogart | Bogart   |       389 | 167       |
| Greg   | Greg     |       894 | NULL      |
| Hatsy  | Hatsy    |       328 | 167       |
| Super  | Super    |       721 | NULL      |
| Goku   | Goku     |       534 | 894       |
| Banana | Banana   |       520 | NULL      |
| Kyle   | Kyle     |       456 | 520       |
+--------+----------+-----------+-----------+

그 후의 모습:

+--------+----------+-----------+-----------+
|  name  | username | member_id | parent_id |
+--------+----------+-----------+-----------+
| Jeff   | Jeff     |       167 | NULL      |
| Asia   | Asia     |       143 | NULL      |
| Bogart | Bogart   |       389 | Jeff      |
| Greg   | Greg     |       894 | NULL      |
| Hatsy  | Hatsy    |       328 | Jeff      |
| Super  | Super    |       721 | NULL      |
| Goku   | Goku     |       534 | Greg      |
| Banana | Banana   |       520 | NULL      |
| Kyle   | Kyle     |       456 | Banana    |
+--------+----------+-----------+-----------+

현재 (작동하지 않는) 쿼리입니다.

UPDATE members SET parent_id=(SELECT name FROM members WHERE member_id=parent_id);

이 기능을 사용하여UPDATE와 함께INNER JOIN:

UPDATE members m1 INNER JOIN members m2 ON m1.parent_id = m2.member_id
  SET m1.parent_id = m2.username

다음 경우에 대비해서parent_idcolumn은 정수/숫자 열입니다.이 열에는 사용자 이름을 설정할 수 없습니다.를 사용할 수 있습니다.SELECT대신UPDATE:

SELECT m1.name, m1.username, m1.member_id, m2.username AS parent_username
FROM members m1 LEFT JOIN members m2 ON m1.parent_id = m2.member_id

dbfiddle.uk 데모

언급URL : https://stackoverflow.com/questions/59482102/how-to-update-a-column-to-match-data-from-another-column-in-the-same-table

반응형