집 >데이터 베이스 >MySQL 튜토리얼 >단일 SQL 쿼리를 사용하여 테이블의 레코드를 재정렬하는 방법은 무엇입니까?
단일 SQL 쿼리로 레코드 재정렬
외관 순서를 지정하는 "Position" 필드가 있는 음식 항목 테이블에서 단일 SQL 쿼리는 단일 레코드의 변경 사항을 기반으로 여러 레코드를 업데이트할 수 있습니다. 이는 특정 목록 내의 항목을 재정렬하는 데 특히 유용합니다.
다음과 같은 테이블이 있다고 가정해 보겠습니다.
id | listID | name | position |
---|---|---|---|
1 | 1 | cheese | 0 |
2 | 1 | chips | 1 |
3 | 1 | bacon | 2 |
4 | 1 | apples | 3 |
5 | 1 | pears | 4 |
6 | 1 | pie | 5 |
배를 칩보다 먼저 이동하려면 칩 사이의 모든 항목의 위치를 증가시킬 수 있습니다. 1.
그러나 대부분의 솔루션에는 여러 쿼리가 포함되어 있어 비효율적일 수 있습니다. 대신 단일 쿼리를 사용하여 레코드 순서를 변경할 수 있습니다.
UPDATE my_table SET position = position + CASE WHEN name = 'pears' THEN -3 ELSE 0 END WHERE listID = 1 AND position BETWEEN 1 AND 4;
이 수식을 사용하면 배가 위치 1로 이동하고 그에 따라 배와 칩 사이의 모든 항목이 증가합니다.
항목을 다시 주문하려면 '배'를 이동할 항목의 이름으로 바꾸고 필요에 따라 차이를 조정하세요.
위 내용은 단일 SQL 쿼리를 사용하여 테이블의 레코드를 재정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!