반응형
이전 쿼리 결과에 따라 테이블을 업데이트하는 중
이전 쿼리 결과를 기반으로 표를 업데이트하려면 어떻게 해야 합니까?
원래 쿼리(GMB 덕분에 커짐)는 주소(사용자 테이블)에서 일치하는 주소(address_effect 테이블)를 찾을 수 있습니다.
이 쿼리 결과에서 address_effect 테이블에서 주소 카운트를 찾아 테이블 "users"의 새 열에 추가합니다.예를 들어, john doe는 주소 열에 아이다호 및 usa와 일치하므로 카운트 열에 '2'가 표시됩니다.
참고로 XAMPP(MariaDB 사용)를 사용하여 로컬 시스템에서 테스트하고 있습니다.
사용자 테이블
+--------+-------------+---------------+--------------------------+--------+
| ID | firstname | lastname | address | count |
| | | | | |
+--------------------------------------------------------------------------+
| 1 | john | doe |james street, idaho, usa | |
| | | | | |
+--------------------------------------------------------------------------+
| 2 | cindy | smith |rollingwood av,lyn, canada| |
| | | | | |
+--------------------------------------------------------------------------+
| 3 | rita | chatsworth |arajo ct, alameda, cali | |
| | | | | |
+--------------------------------------------------------------------------+
| 4 | randy | plies |smith spring, lima, peru | |
| | | | | |
+--------------------------------------------------------------------------+
| 5 | Matt | gwalio |park lane, atlanta, usa | |
| | | | | |
+--------------------------------------------------------------------------+
address_effect 테이블
+---------+----------------+
|address |effect |
+---------+----------------+
|idaho |potato, tater |
+--------------------------+
|canada |cold, tundra |
+--------------------------+
|fremont | crowded |
+--------------------------+
|peru |alpaca |
+--------------------------+
|atlanta |peach, cnn |
+--------------------------+
|usa |big, hard |
+--------+-----------------+
일치하는 수를 반환하는 관련 하위 쿼리를 사용합니다.
UPDATE user u
SET u.count = (
SELECT COUNT(*)
FROM address_effect a
WHERE FIND_IN_SET(a.address, REPLACE(u.address, ', ', ','))
)
데모를 참조해 주세요.
결과:
> ID | firstname | lastname | address | count
> -: | :-------- | :--------- | :------------------------- | ----:
> 1 | john | doe | james street, idaho, usa | 2
> 2 | cindy | smith | rollingwood av,lyn, canada | 1
> 3 | rita | chatsworth | arajo ct, alameda, cali | 0
> 4 | randy | plies | smith spring, lima, peru | 1
> 5 | Matt | gwalio | park lane, atlanta, usa | 2
주의: MySQL에서는 확인했지만 MariaDB에서는 확인하지 않았습니다.
사용자 테이블의 카운트 열은 INSER JOIN에서 UPDATE 문을 사용하여 업데이트할 수 있습니다.그런 다음 "GROUP BY"를 사용하도록 원래 쿼리를 수정하는 쿼리를 사용할 수 있습니다.
UPDATE users AS u
INNER JOIN
(
-- your original query modified
SELECT u.ID AS ID, count(u.ID) AS count
FROM users u
INNER JOIN address_effect a
ON FIND_IN_SET(a.address, REPLACE(u.address, ', ', ','))
GROUP BY u.ID
) AS c ON u.ID=c.ID
SET u.count=c.count;
언급URL : https://stackoverflow.com/questions/62964855/updating-table-based-on-the-results-of-previous-query
반응형
'programing' 카테고리의 다른 글
| 인수를 다른 Javascript 함수로 전달 (0) | 2022.12.07 |
|---|---|
| 치명적인 오류: 클래스 'SoapClient'를 찾을 수 없습니다. (0) | 2022.12.07 |
| Python에서 파일 크기를 가져오고 있습니까? (0) | 2022.11.27 |
| PHP에서 신용카드를 검증하는 가장 좋은 방법은 무엇입니까? (0) | 2022.11.27 |
| VueJS - 커스텀 요소 등록 방법 , , , (0) | 2022.11.27 |