집 >데이터 베이스 >MySQL 튜토리얼 >성능 저하 없이 단일 SQL 쿼리에서 여러 레코드를 어떻게 재정렬할 수 있습니까?
SQL을 사용하여 여러 레코드 재정렬
이 관계형 데이터베이스 시나리오에는 식품 항목을 나타내는 "Position" 필드가 포함된 테이블이 있습니다. 목록 내의 표시 순서("listID"로 식별됨) 작업은 항목(예: "배")을 특정 목록 내의 새 위치(예: "칩" 앞)로 이동하는 것입니다. 단일 SQL 쿼리로 이를 달성하려면 신중한 접근 방식이 필요합니다.
한 가지 일반적인 접근 방식은 다음과 같은 쿼리를 사용하여 영향을 받는 레코드를 검색하는 것입니다.
<code class="sql">SELECT id, position FROM my_table WHERE listID = 1 AND position BETWEEN 1 AND 5;</code>
이 쿼리는 현재 위치와 대상 위치 사이의 모든 레코드.
그러나 여러 쿼리가 필요하지 않은 대체 접근 방식이 있습니다. 위치 사이에 "간격"이 생기도록 데이터를 수정하면 업데이트 프로세스가 단순화될 수 있습니다.
다음 쿼리를 실행하세요.
<code class="sql">UPDATE my_table SET position = position * 10;</code>
이렇게 하면 모든 위치에 10이 곱해져 더 큰 크기가 효과적으로 생성됩니다.
Pears를 두 번째 위치로 이동하려면 다음을 실행합니다.
<code class="sql">UPDATE my_table SET position = 15 /* New position for "Pears" */ WHERE listID = 1 AND name = 'Pears';</code>
Pears의 위치가 15로 조정되어 이전에 차지했던 간격이 남습니다.
여러 재정렬 작업 후 잠재적인 공백을 제거하려면 다음을 주기적으로 실행하십시오.
<code class="sql">UPDATE my_table SET position = position * 10; /* Increase gaps */</code>
이 접근 방식은 단일 SQL 쿼리로 여러 레코드를 재정렬하는 보다 효율적인 솔루션을 제공하여 성능 없이도 항목이 원하는 순서로 유지되도록 보장합니다. 처벌을 받습니다.
위 내용은 성능 저하 없이 단일 SQL 쿼리에서 여러 레코드를 어떻게 재정렬할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!