아직 행이 존재하지 않는 경우에만 행을 삽입하려고합니다.MySQL 5.5.30 INSERT가 존재하지 않는 경우에만
나는 포럼을 통해 살펴 했어이 구문은 내가 원하는 것으로 나타납니다
INSERT INTO tblSites (site,homepage) VALUES ('A','www.a.com')
WHERE NOT EXISTS (SELECT * FROM tblSites where homepage='www.a.com')
내가 구문 오류가 발생합니다.
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 'WHERE NOT EXISTS (SELECT * FROM tblSites where homepage='www.a.com')'
at line 1
내가 읽었으며 모두가이 구문을 사용하고있는 것 같습니다. 사용하고있는 버전에서 사용할 수 있습니까? 아래에 몇 가지 다른 옵션을 나열했지만, 이것이 왜 내 자신의 학습 (그리고 온전한)을 위해 작동하지 않는지 이해하고 싶습니다.
내가 본 다른 방법은 다음과 같습니다.
1) REPLACE. 이 쿼리를 사용하려고하는 일부 영역에서는 수백만 개의 행이 있고 중복이있을 가능성이 큽니다. 위의 구문과 효율성면에서 비교할 수있는 경우에만 REPLACE를 사용하려고합니다. 이견있는 사람?
2) INSERT IGNORE. 이것을 사용할 가치가 있습니다. tblSites는 현재 (siteId, name, homepage) 있습니다. 나는 고유 한 ID로 홈페이지를 만들 수 있었고 이것이 작동 할 것이라고 믿었지만 (?), tblContentSites (siteId, contentId)를 복합 키 siteId +와 함께 사용하여이 테이블을 tblContent (사이트의 콘텐츠) ContentId. 나는 정수 테이블 ID가 반복적으로 그 접합점 테이블에서 홈페이지보다 더 좋을 것이라고 느꼈다. 이것에 대한 생각을 고맙게 생각합니다.
3) 중복 키 업데이트 - 이것은 행을 복제하는 것처럼 보이지만 새 ID를 다른 ID로 지정하는 것입니다. 이는 어쨌든 데이터를 복제하는 것과 마찬가지이며 내 문제가 발생할 수 있습니다. 나는 이것의 사용을 오해하고 있는가? DUPLICATE KEY UPDATE 후에 수행 할 작업의 유연성이 더 듭니까?
많은 감사,
드류
어디 구문 오류 어느 하나를받을 수 있나요? 오류를 붙여 넣으십시오. –
SQL 구문에 오류가 있습니다. 올바른 구문을 찾으려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 1 행의 '존재하지 않는 곳 (SELECT * FROM tblSites where homepage ='www.a.com ')'근처에서 사용하십시오. – user3535031