source

SQL에서 업데이트를 위해 서브스트링을 사용하려면 어떻게 해야 합니까?

manysource 2023. 9. 7. 21:49

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