반응형
SQL - IF EXPEDUTE ELSER 구문 오류
다음과 같은 SQL 쿼리가 있습니다.
IF EXISTS(SELECT * FROM component_psar WHERE tbl_id = '2' AND row_nr = '1')
UPDATE component_psar
SET col_1 = '1', col_2 = '1', col_3 = '1', col_4 = '1', col_5 = '1',
col_6 = '1', unit = '1', add_info = '1', fsar_lock = '1'
WHERE tbl_id = '2' AND row_nr = '1'
ELSE
INSERT INTO component_psar (tbl_id, row_nr, col_1, col_2, col_3, col_4,
col_5, col_6, unit, add_info, fsar_lock)
VALUES ('2', '1', '1', '1', '1', '1', '1', '1', '1', '1', 'N')
내가 모든 열을 '1'로 설정하려고 한다는 사실은 무시하세요.단지 예시적인 자료일 뿐입니다.:)
어쨌든 이 쿼리를 실행하면 구문 오류가 반환됩니다.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'IF EXISTS(SELECT * FROM
component_psar WHERE tbl_id = '2' AND row_nr = '1') UP' at line 1
나는 그것을 응시하고 30분 동안 인터넷을 검색해 보았지만 이 추정되는 구문 오류를 찾을 수 없습니다.아마 제가 놓치고 있는 바보 같은 짓을 하게 될 겁니다. 하지만 이 일에 대해서는 여러분의 도움이 필요합니다.
INSERT INTO component_psar (tbl_id, row_nr, col_1, col_2, col_3, col_4, col_5, col_6, unit, add_info, fsar_lock)
VALUES('2', '1', '1', '1', '1', '1', '1', '1', '1', '1', 'N')
ON DUPLICATE KEY UPDATE col_1 = VALUES(col_1), col_2 = VALUES(col_2), col_3 = VALUES(col_3), col_4 = VALUES(col_4), col_5 = VALUES(col_5), col_6 = VALUES(col_6), unit = VALUES(unit), add_info = VALUES(add_info), fsar_lock = VALUES(fsar_lock)
함께 작업합니다.tbl_id
그리고.row_nr
하고 있다UNIQUE
열쇠.
이것은 DocJonas가 예를 들어 링크한 방법입니다.
다음은 설명서 INSERT...에 대한 링크입니다. "중복문"입니다.
추가해야 합니다.THEN
IF EXISTS(SELECT * FROM component_psar WHERE tbl_id = '2' AND row_nr = '1')
THEN
UPDATE component_psar SET col_1 = '1', col_2 = '1', col_3 = '1', col_4 = '1', col_5 = '1', col_6 = '1', unit = '1', add_info = '1', fsar_lock = '1' WHERE tbl_id = '2' AND row_nr = '1'
ELSE
INSERT INTO component_psar (tbl_id, row_nr, col_1, col_2, col_3, col_4, col_5, col_6, unit, add_info, fsar_lock) VALUES('2', '1', '1', '1', '1', '1', '1', '1', '1', '1', 'N')
이 방법에서는 UPDATE가 성공할 때 하나의 문만 실행합니다.
-- For each row in source
BEGIN TRAN
UPDATE target
SET <target_columns> = <source_values>
WHERE <target_expression>
IF (@@ROWCOUNT = 0)
INSERT target (<target_columns>)
VALUES (<source_values>)
COMMIT
이게 가장 우아하지 않나요?
REPLACE
INTO component_psar (tbl_id, row_nr, col_1, col_2, col_3, col_4, col_5, col_6, unit, add_info, fsar_lock)
VALUES('2', '1', '1', '1', '1', '1', '1', '1', '1', '1', 'N')
참조: http://dev.mysql.com/doc/refman/5.7/en/replace.html
다음 문장을 사용합니다.
IF EXISTS(SELECT * FROM prueba )
then
UPDATE prueba
SET nombre = '1', apellido = '1'
WHERE cedula = 'ct'
ELSE
INSERT INTO prueba (cedula, nombre, apellido)
VALUES ('ct', 'ct', 'ct');
언급URL : https://stackoverflow.com/questions/12639407/sql-if-exists-update-else-insert-syntax-error
반응형
'programing' 카테고리의 다른 글
페이지를 로드할 때 앵커 "점프"를 비활성화하는 방법? (0) | 2023.10.16 |
---|---|
PHPExcel을 사용한 CSV 내보내기/가져오기 (0) | 2023.10.16 |
Spring Boot 앱: application.properties를 선택하지 않습니까? (0) | 2023.10.16 |
git가 .gitignore 파일에 없는 파일을 무시하는 이유는 무엇입니까? (0) | 2023.10.16 |
템플릿 파일이 변경되면 Plask 앱 다시 로드 (0) | 2023.10.16 |