집 >데이터 베이스 >MySQL 튜토리얼 >열 값이 변경된 SQL 행을 식별하는 방법은 무엇입니까?
SQL을 사용하여 변경된 열 값이 있는 행 쿼리
테이블 내에서 열 값 변경 인스턴스를 어떻게 정확히 찾아낼 수 있습니까? 이 쿼리를 사용하면 특정 열 값이 수정된 행을 식별할 수 있습니다.
설명하기 위해 다음 표를 고려하세요.
Value Time 0 15/06/2012 8:03:43 PM 1 15/06/2012 8:03:43 PM * 1 15/06/2012 8:03:48 PM 1 15/06/2012 8:03:53 PM 1 15/06/2012 8:03:58 PM 2 15/06/2012 8:04:03 PM * 2 15/06/2012 8:04:08 PM 3 15/06/2012 8:04:13 PM * 3 15/06/2012 8:04:18 PM 3 15/06/2012 8:04:23 PM 2 15/06/2012 8:04:28 PM * 2 15/06/2012 8:04:33 PM
목표는 별표가 표시된 행을 선택하는 것입니다. 값의 변화를 나타냅니다. 이는 다른 데이터베이스 쿼리에 활용할 수 있는 변경 사항과 관련된 시간 간격을 결정하는 데 중요합니다.
해결책:
창 기능을 사용하여 SQL 쿼리를 구현하고 행 번호, 우리는 원하는 것을 도출합니다 행:
;WITH x AS ( SELECT value, time, rn = ROW_NUMBER() OVER (PARTITION BY Value ORDER BY Time) FROM dbo.table ) SELECT * FROM x WHERE rn = 1;
설명:
추가 고려 사항:
SELECT * FROM table WHERE value <> LAG(value) OVER (ORDER BY time);
DECLARE @x TABLE(value INT, [time] DATETIME) INSERT @x VALUES (0,'20120615 8:03:43 PM'),-- (1,'20120615 8:03:43 PM'),--* (1,'20120615 8:03:48 PM'),-- (1,'20120615 8:03:53 PM'),-- (1,'20120615 8:03:58 PM'),-- (2,'20120615 8:04:03 PM'),--* (2,'20120615 8:04:08 PM'),-- (3,'20120615 8:04:13 PM'),--* (3,'20120615 8:04:18 PM'),-- (3,'20120615 8:04:23 PM'),-- (2,'20120615 8:04:28 PM'),--* (2,'20120615 8:04:33 PM'); ;WITH x AS ( SELECT *, rn = ROW_NUMBER() OVER (ORDER BY time) FROM @x ) SELECT x.value, x.[time] FROM x LEFT OUTER JOIN x AS y ON x.rn = y.rn + 1 AND x.value <> y.value WHERE y.value IS NOT NULL;
이 쿼리는 SQL의 창 기능을 활용하여 열 값이 변경된 행을 효과적으로 검색하여 데이터 변동에 대한 귀중한 통찰력을 제공합니다.
위 내용은 열 값이 변경된 SQL 행을 식별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!