MySQL에서 "존재하지 않는 경우 삽입" 작업을 구현하는 방법은 무엇입니까?
P粉005105443
P粉005105443 2023-08-29 10:59:40
0
2
550
<p>저는 Google 검색을 통해 이 기사를 처음 발견했습니다. <em>표준 SQL에서 INSERT if NOT EXISTS 쿼리를 작성하는 방법</em> 이 기사에는 뮤텍스 테이블에 대해 설명되어 있습니다. </p> <p>약 1,400만 개의 레코드가 포함된 테이블이 있습니다. 동일한 형식으로 더 많은 데이터를 추가하려는 경우, 한 쌍의 쿼리(즉, 확인해야 할 쿼리 하나와 삽입할 쿼리 하나, 결과 세트와 함께)를 사용하지 않고 삽입하려는 레코드가 존재하지 않는지 확인하는 방법이 있습니까? 비었다)? </p> <p>필드에 대한 <code>unique</code> 제약 조건은 <code>insert</code>가 이미 존재하는 경우 실패함을 보장합니까? </p> <p><em>은 단지 </em> 제약사항인 것 같은데, PHP를 통해 삽입을 실행하면 스크립트가 덜거덕거립니다. </p>
P粉005105443
P粉005105443

모든 응답(2)
P粉338969567

해결책:

으아악

지침:

가장 깊은 쿼리

으아악

WHERE NOT EXISTS条件,检测是否已存在包含要插入数据的行。找到此类的一行后,查询可能会停止,因此LIMIT 1로 사용됩니다(미세 최적화, 생략 가능).

중간 쿼리

으아악

는 삽입할 값을 나타냅니다. DUAL 是指所有 Oracle 数据库中默认存在的一种特殊的单行单列表(请参阅 https://en.wikipedia.org/wiki/DUAL_table)。在 MySQL-Server 版本 5.7.26 上,当省略 FROM DUAL 时,我得到了有效的查询,但旧版本(如 5.5.60)似乎需要 FROM 信息。通过使用 WHERE NOT EXISTS, 가장 안쪽 쿼리가 일치하는 데이터를 찾으면 중간 쿼리는 빈 결과 집합을 반환합니다.

외부 쿼리

으아악

데이터를 삽입합니다(중간 쿼리가 데이터를 반환하는 경우).

P粉521013123

사용INSERT IGNORE INTO table.

또한 INSERT … ON DUPLICATE KEY UPDATE13.2.6.2 INSERT ... ON DUPLICATE KEY UPDATE 문 에서 사용할 수 있는 구문이 있습니다.


포스트 출처: bogdan.org.ua Google 웹 캐시 기준:

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿