SQL에서 업데이트를 위해 서브스트링을 사용하려면 어떻게 해야 합니까?
다시한번 SQL에 문제가 생겼습니다.SELECT 쿼리에 사용했던 부분 문자열을 테이블 업데이트에 사용하고 싶습니다.쿼리는 다음과 같습니다.
SELECT SUBSTRING(h.action,LOCATE('"',h.action)+1,(((LENGTH(h.action))-LOCATE('"', REVERSE(h.action))-1)-LOCATE('"',h.action))) AS File,
h.TIMESTAMP,
h.user,
d.uid,
d.size
d.id
from history h
INNER JOIN data d ON h.contract = d.contract
LEFT JOIN history ON d.user = history.user
WHERE ( SELECT DISTINCT SUBSTRING(h.action,LOCATE('"',h.action)+1,(((LENGTH(h.action))-LOCATE('"', REVERSE(h.action))-1)-LOCATE('"',h.action)))) IN (SELECT filename FROM data)
and h.contract=xy AND h.action LIKE 'file%added' GROUP BY File
이제 테이블 데이터를 업데이트하려고 합니다.'user' 열과 'Timestamp' 열은 테이블 히스토리에서 데이터로 전송됩니다.update 명령을 마지막으로 시도한 것은 다음과 같습니다.
update data d
set
d.user = v.user,
d.upload= h.`timestamp`
inner join
history h on d.contract = h.contract
where
d.filename in (SELECT DISTINCT SUBSTRING(h.action,LOCATE('"',h.action)+1,(((LENGTH(h.action))-LOCATE('"', REVERSE(h.action))-1)-LOCATE('"',h.action)))) and h.action like 'File%added'
지금까지 구문 오류가 발생했거나 수정할 행이 0개인 SQL 명령어 중 하나입니다.저는 그것이 고치기 쉬운 문제이기를 바랍니다.
도와주셔서 미리 감사드립니다!
아래 쿼리가 도움이 될지 모르겠습니다. 제가 코멘트에서 언급했듯이 데이터 예시와 예상 결과를 제공해야 하기 때문입니다.
올바른 UPDATE 구문은 다음과 같습니다.
단일 테이블 구문:
업데이트 [LOW_PRIORITION] [IGNORE] table_reference [PARTITION(partition) (float_list)] [expr1부터 expr2까지의 일부 기간 동안] SET col1={expr1|DEFAULT} [,col2={expr2|DEFAULT}] ...[WHEREWHERE_condition] [ORDER BY ...] [LIMIT row_count] 다중 테이블 구문:
업데이트 [LOW_PRIORITY] [IGNORE] table_referenceSET col1={expr1|DEFAULT} [, col2={expr2|DEFAULT}] ...[WHEREWHERE_조건]
따라서 업데이트 쿼리는 다음과 같습니다.
update data d
inner join history h on d.contract = h.contract
set d.user = v.user, d.upload= h.`timestamp`
where d.filename in (SELECT DISTINCT SUBSTRING(h.action,LOCATE('"',h.action)+1,(((LENGTH(h.action))-LOCATE('"', REVERSE(h.action))-1)-LOCATE('"',h.action))))
and h.action like 'File%added' ;
언급URL : https://stackoverflow.com/questions/71425945/how-i-can-use-substring-for-update-in-sql-right
'source' 카테고리의 다른 글
스위프트 - 소수점이 0인 경우 플로트에서 소수점을 제거하는 방법은 무엇입니까? (0) | 2023.09.07 |
---|---|
백업만 복사 옵션의 의미는 무엇입니까? (0) | 2023.09.07 |
Python: pandas dataframe의 두 열(변수)을 기준으로 빈도수를 구하면 일부 행이 나타납니다. (0) | 2023.09.07 |
SQL 쿼리는 열 값이 테이블 B에 없을 때 테이블 A에서 행을 가져와 테이블 B에 저장할 것을 계산합니다. (0) | 2023.09.07 |
MariaDB 클러스터 - 하나의 노드가 다른 노드보다 느림 (0) | 2023.09.07 |