MySQL에서 "존재하지 않는 경우 삽입" 작업을 구현하는 방법은 무엇입니까?
P粉005105443
2023-08-29 10:59:40
<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>
해결책:
으아악지침:
가장 깊은 쿼리
으아악는
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
, 가장 안쪽 쿼리가 일치하는 데이터를 찾으면 중간 쿼리는 빈 결과 집합을 반환합니다.외부 쿼리
으아악데이터를 삽입합니다(중간 쿼리가 데이터를 반환하는 경우).
사용
INSERT IGNORE INTO table
.또한
INSERT … ON DUPLICATE KEY UPDATE
13.2.6.2 INSERT ... ON DUPLICATE KEY UPDATE 문 에서 사용할 수 있는 구문이 있습니다.포스트 출처: bogdan.org.ua Google 웹 캐시 기준: