2024. 6. 25. 14:44ㆍ데이터베이스/마리아DB
Sheet1 테이블에서 guid_key 로 tbid 테이블의 guid_key이 같으면 tbid 의 id 를 Sheet1 의 tbid_id에 업데이트 하는 sql
MariaDB에서 `Sheet1` 테이블과 `tbid` 테이블 간의 `guid_key`가 일치하는 경우 `tbid`의 `id` 값을 `Sheet1`의 `tbid_id`로 업데이트하는 SQL 쿼리는 다음과 같습니다:
```sql
UPDATE Sheet1 AS s
JOIN tbid AS t ON s.guid_key = t.guid_key
SET s.tbid_id = t.id;
```
이 쿼리는 다음과 같이 작동합니다:
1. `Sheet1` 테이블을 `s`로, `tbid` 테이블을 `t`로 별칭을 줍니다.
2. 두 테이블의 `guid_key`가 같은 행을 조인합니다.
3. `Sheet1`의 `tbid_id` 열을 `tbid`의 `id` 값으로 업데이트합니다.
이렇게 하면 `Sheet1`의 모든 행에서 `guid_key`가 일치하는 경우 `tbid_id`가 `tbid` 테이블의 `id` 값으로 업데이트됩니다.
Sheet1 읽어가면서 pinhisttm_copy1 의 guid_key 의 내용이 없으면 guid_key, order_price, customer_tel, tbid_id 를 pinhisttm_copy1 에 추가 시키고, accept_at은 accept_at, created_at, updated_at에 추가 시킨다.
이 작업을 수행하기 위해서는 두 단계로 나누어 처리해야 합니다. 먼저 `Sheet1`을 읽어가면서 `pinhisttm_copy1`에 `guid_key`가 없는 경우 새로운 행을 삽입하고, 그 행에 필요한 데이터를 추가합니다.
다음은 이를 수행하는 SQL 스크립트입니다:
```sql
-- 새 레코드를 삽입
INSERT INTO pinhisttm_copy1 (guid_key, order_price, customer_tel, tbid_id, accept_at, created_at, updated_at)
SELECT s.guid_key, s.order_price, s.customer_tel, s.tbid_id, s.accept_at, s.accept_at, s.accept_at
FROM Sheet1 AS s
LEFT JOIN pinhisttm_copy1 AS p ON s.guid_key = p.guid_key
WHERE p.guid_key IS NULL;
```
이 쿼리는 다음과 같이 작동합니다:
1. `Sheet1` 테이블을 `s`로, `pinhisttm_copy1` 테이블을 `p`로 별칭을 줍니다.
2. `LEFT JOIN`을 사용하여 `Sheet1`의 `guid_key`와 `pinhisttm_copy1`의 `guid_key`를 비교합니다.
3. `pinhisttm_copy1`에 `guid_key`가 없는 행을 찾습니다(`p.guid_key IS NULL`).
4. `Sheet1`의 `guid_key`, `order_price`, `customer_tel`, `tbid_id`, `accept_at` 값을 `pinhisttm_copy1`에 삽입합니다.
5. `accept_at` 값을 `created_at`과 `updated_at`에도 동일하게 삽입합니다.
이 방법을 통해 `Sheet1`의 데이터를 읽어가면서 `pinhisttm_copy1`에 필요한 데이터가 없는 경우 새로운 행을 추가할 수 있습니다.
'데이터베이스 > 마리아DB' 카테고리의 다른 글
MariaDB 외부에서 접속 (0) | 2024.06.25 |
---|---|
mariadb Ver 15.1 Distrib 10.6.15-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 을 설치할려면 (0) | 2024.06.25 |
mariadb를 설치하기전 확인사항은 (0) | 2024.06.25 |
ubuntu 20.04에서 마리아db 버젼 알아보기 (0) | 2024.06.25 |
MariaDB JSON으로 자료 처리하기 (0) | 2023.07.20 |