Articles

레드 게이트 Hub

소개

는 몇 가지 이유가 있을 비교할 필요가 있는 테이블이나 결과입니다.

  • 때때로 테이블에 동일하거나 다른 데이터가 포함되어 있는지 여부를 알아야합니다. 이것은 일반적으로 테스트를 주장 당신이 단지 알아야 할지 여부를 당신의 일상이나 일괄 생산하고 그 결과로 오른쪽 데이터습니다. 매개 변수에 대한 특정 발레와 함께 제공되는 경우. 그것은 하나 잘못된 또는 오른쪽
  • 때때로,당신은 알아야 할 무엇을 행 변경되지 않고,어쩌면,되는 특정에 대해 열을 변경하는 방법.
  • 경우가 있는 대형 테이블에 용어 모두의 행과 열고,당신이 뭔가를 필요로 보여줍니다 당신은 특히 칼럼(s)을 변경합니다. 그렇지 않으면’눈으로’스캔하는 시간을 낭비해야 할 수도있는 루틴의 버그를 추적 할 때이를 원할 수도 있습니다.

두 테이블에 다른 행 수가 있으면 sql

에서이 세 가지 다소 다른 작업을 처리 할 것입니다. 그러나 table_b 에 차이가없는 Table_A 의 모든 행이 포함되어 있는지 여부를 알아야 할 때가 있습니다. 고자 하는 경우 더 세부사항,당신도 알고 싶은 행에서 하나 테이블에 없는 일반적인,또는 일반적인 행낸 바와 같이,기본 키가 있는 다릅니다. 왜 단지 두 개의 테이블을 비교하는 데 충실합니까? 필요한만큼 비교하는 방법이 있습니다. (예를 들어 여러 데이터베이스 스냅 샷의 메타 데이터를 비교하는 경우와 같이). 예,많은 변화가있다

당신은 확실히이 물건을 할 수있는 도구와 기능을 가지고 있습니까?

SQL Data Compare,TableDiff,tSQLt 또는 Change Data Capture 와 같은 도구를위한 장소가 항상 있습니다. 많은 것은 상황과 작업 유형에 달려 있습니다. 라이브 시스템의 데이터 변경에 대한 감사를 수행하는 문제는 테이블과 데이터베이스의 동기화와 마찬가지로 별도의 주제입니다. XML 문서의 비교도 범위를 벗어났습니다. 우리가 가격으로 순수와 함께 일상적인 비교의 테이블에 데이터를

나는 사용할 가능성이 가장 높 TSQL 기술을 비교 테이블:

개발하고…

을 개발하는 과정에서 데이터베이스의 많은 테이블을 얻을 비교합니다. 하지만 큰 물건:모든 테이블을 반환 함수,예를 들어,필요 테스트 장에서 스크립트를 구축하는지 확인 그것이 당신이 무슨 생각해야에서 모든 생각할 수 있는 테스트는 상황,그리고 통합하는 모든 불쾌한 경우도 그것을 발견하고있으로 테스터에서 과거입니다. 모든 저장 프로 시저는 실행하는 프로세스가 의도 한 것과 다른 것을 정확히 수행하는지 확인하기 위해 테스트가 필요합니다.

시간이 있었는 건축 활동이었다 여유롭게 오히려,하지만 당신이 가지고 밤을 구축 및 통합 테스트,그것은 최고의 자동화하는 완전히 없애의 기계에 의존합니다.

ETL

시스템에 데이터 로딩을 자동화 할 때 종종 다양한 조건을 테스트해야합니다. 기존 버전의 행을 업데이트 할뿐만 아니라 새 행을 삽입해야합니까? 중복 항목을 방지하거나 기존 항목을 삭제하려면 트랩이 필요합니까?

테스트 데이터 설정.

이 기사의 스크립트는 모두 유서 깊은 술집 데이터베이스의 테이블을 사용합니다. 우리는 저자 테이블을 사용하려고하지만 조금 더 현실적인 크기를 얻기 위해 행 수를 5000 으로 조금 늘릴 것입니다. 나는 글과 함께 테이블의 소스를 제공했다.

I then created a copy of the table …

1
2
3
4
5
6

SELECT * INTO authorsCopy
FROM authors
GO
ALTER TABLE dbo.authorsCopy ADD CONSTRAINT PK_authorsCopy PRIMARY KEY CLUSTERED
(au_id)ON PRIMARY

그런 다음 행의 일부를 변경했습니다.

1
2
3
4
5
업데이트 authorsCopy 설정 주소=물건(주소,1,1,”)
어디 au_ID 에(
선택 최고 10au_id
에서 authorsCopy f
전화로 주문)

이제 두 테이블에 있어야 주로 동일한 몇 가지 작은 변화에서 주소 필드

테스트 테이블이 다른지 확인합니다.

때로는 테이블이 같은지 알고 싶을 때가 있습니다. 이것의 예는 TVF 가 올바른 결과를 가진 기존 테이블의 결과와 비교하여 제대로 작동하는지 확인하는 것입니다. 이 작업을 수행하는 일반적인 방법은 매우 빠르기 때문에 SQL Server 의CHECKSUM()함수 그룹을 사용하는 것입니다.

체크섬 사용

BINARY_CHECKSUM 함수를 사용하여 테이블이 동일한 지 확인할 수 있습니다. 그것은 빠르지 만,잠시 후에 보여 주듯이 완벽하지는 않습니다. 예를 들어 일련의 테스트가있는 경우 일반적으로 충분합니다.

1
2
3
4
5
6
7
8
9
경우(
선택 CHECKSUM_AGG(BINARY_CHECKSUM(*))
에서 저자)=(
선택 CHECKSUM_AGG(BINARY_CHECKSUM(*))
에서 authorsCopy)
‘를 선택하면 그들은 아마 동일한’
다른
SELECT’그들은 다른’

이 작업을 위해,당신의 테이블이 없어야 합TEXT, NTEXT, IMAGE or CURSOR SQL_VARIANT이러한 유형)으로 그것의 기본 유형입니다. 요즘이기 때문에,하지만 당신은 모든 종류의 합병증할 수 있습 강제 열과 함께 중 하나는 지원되지 않는 형식으로 지원되는 유형입니다. 실제로,나는 일반적으로 메타 데이터를 확인하고 자동으로이 작업을 수행하는 루틴을 사용하지만 예쁘지는 않습니다.

에서 작업하 버전에 당신은 아마이 지정하고 싶은 목록의 열을 경우에 특히 할 필요가 있는 명시적 강압의 데이터 형식,또는 확인하는 경우 특정 열

BINARY_CHECKSUM() CHECKSUM()CommonWords라는 표에 포함 된 영어의 일반적인 단어를 살펴봄으로써 이것을 보여줄 것입니다.. 당신은 그들 모두가 다른 체크섬을 가질 것으로 기대하지만,그렇지 않습니다.

1
2
3
4
5
6
7
8
9
문자열을 선택하 BINARY_CHECKSUM(string)”으로 체크섬”
에서 commonWords
어디 BINARY_CHECKSUM(문자열) 에서
(
선택 BINARY_CHECKSUM(string)
에서 commonwords
그룹에 의해 BINARY_CHECKSUM(string)
데 COUNT(*)>2)
ORDER BY BINARY_CHECKSUM(string)

…주는 결과를…

이 정보 우리는 빠르게 입증하는 다른 문자열 수 있습 같은 체크섬

1
2
3
선택 BINARY_CHECKSUM(‘reed 괴상한’),
BINARY_CHECKSUM(‘에 소송을 제기 둥지’),
BINARY_CHECKSUM(‘stud the oust’)

All these will; have the same checksum, as would …

1
2
3

SELECT
BINARY_CHECKSUM(‘accosted guards’),
BINARY_CHECKSUM(‘accorded feasts’)

….반면…

1
2
3
선택 BINARY_CHECKSUM(‘이 보이는 매우 다음과 같이 다음’),
BINARY_CHECKSUM(‘이 보이는 매우 다음과 같이 다음’),
BINARY_CHECKSUM(‘이 보이는 매우 다음과 같이 다음’)

…당신에게 서로 다른 체크 다음과 같이…

1
2

———– ———– ———–
-447523377 -447522865 -447654449

The sister function CHECKSUM()

1
2
3
4

SELECT CHECKSUM(‘This looks very much 다음과 같이 다음’),
CHECKSUM(‘이 보이는 매우 다음과 같이 다음’),
CHECKSUM(‘이 보이는 매우 다음과 같이 다음’)

…들을 발견할 수 있기를, 기 때문에 그것을 사용하고 현재 정렬하고 나의 데이터베이스의 데이터 정렬은 대소문자를 구분하지 않습니다. CHECKSUM()는 문자열 비교에서 동일한 경우 체크섬에서 동일한 문자열을 찾는 것을 목표로합니다.

1
2
———– ———– ———–
-943581052-943581052-943581052

그 최고라고 말할 수 있는 강한 가능성 테이블이 동일하지만 필요하신 경우에는 절대적으로 특정 사용하여 다음,다른 알고리즘이 있습니다.

지 않으면 마음에 차이의 경우 텍스트 문자열,다음 사용할 수 있습니다CHECKSUM()BINARY_CHECKSUM()

좋은 가치의 이 기술은 일단 당신이 계산됩 체크섬,당신이 필요로하는 저장할 수 있습니다 그것은 값으로 열에서의 테이블 대신 필요로의 원본 테이블과 그러므로 당신은 전체를 만들 수 있습니다 프로세스에도 빠른,더 적은 시간이 소요됩니다. 를 저장하는 경우 체크섬에 의해 반환되는 값CHECKSUM()를 확인해야에 대한 테이블 라이브 체크섬 생성과 동일한 데이터 정렬입니다.

다음은’변경된 내용’루틴의 간단한 예입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
–을 만들겠’체크섬’테이블’즉석에서’사용하여 선택합니다.
SELECT
au_ID,
BINARY_CHECKSUM(au_id,au_lname,au_fname,전화,도시,지퍼,) 로
로 auchk
에서 authorscopy
ORDER BY au_ID
/*지금 우리에 넣어 제약 조건을 확인 우리가 우리 하지 않은 복권(매우 어렵지만 완전히 불가능한 것을 우리는 두 가지 동일한 행 체크섬)*/
ALTER TABLE AuChk 제약 추가 IsItUnique 독특한()
업데이트 authorscopy 설정 au_fname=’Arthur’
어디 au_ID=’327-89-2366′
선택 authorscopy.*
FROM authorscopy
INNER JOIN AuChk ON authorscopy.au_ID=AuChk.au_ID
WHERE <>BINARY_CHECKSUM(authorscopy.au_id, au_lname, au_fname, phone, , city, , zip, )

…which gives…

1
2
3

au_id au_lname au_fname phone address city state zip contract
———– ——— ——— ———— ————— ————- —– —– ——–
327-89-2366 Mendoza Arthur 529275-5757 15 Hague Blvd. 98949 의 작은 바위 1

그리고 우리는 단지 정돈합니다.

1
2
3
/*그리고 우리는 단지 그것이 무엇인지 다시 그것의 일부로 분해*/
업데이트 authorscopy 설정 au_fname=’Arnold’
어디 au_ID=’327-89-2366′

의 물론, 당신이 사용할 수 있는 트리거 하지만 때로는 당신도 그냥 매일 주간 보고서의 변화없이의 침입한 트리거로 표입니다.

Xml 을 사용하여

하나의 일반적인 가능성은 두 테이블의 XML 버전을 비교하는 것입니다. 체크섬 접근 방식보다 느리지 만 더 안정적입니다.

1
2
3
4
5
6
7
8
9
10

IF CONVERT(VARCHAR(MAX),(
SELECT *
FROM authors ORDER BY au_id FOR XML path, root))
=
CONVERT(VARCHAR(MAX),(
SELECT *
FROM authorscopy ORDER BY au_id FOR XMLpath, root))
SELECT ‘they are the same’
다른
SELECT’그들은 다른’

여기에서,당신은 당신의 유형을 지정할 수 있습니다 비교를 지정하여 데이터 정렬입니다.

또는 테이블의 데이터를 비교하여이 작업을 수행 할 수 있습니다..

1
2
3
4
5
6
7
8
9
10

IF BINARY_CHECKSUM(CONVERT(VARCHAR(MAX),(
SELECT *
FROM authors ORDER BY au_id FOR XML path, root)))
=
BINARY_CHECKSUM (CONVERT(VARCHAR(MAX),(
SELECT *
FROM authorscopy ORDER BY au_id FOR XML path, root)))
SELECT’그들은 거의 동일한’
다른
SELECT’그들은 다른’선택’그들은 다른’

…계산하여 체크섬의 XML version 니다. 이렇게 하면 비교하는 테이블의 체크섬을 저장할 수 있습니다.

를 찾는 곳이의 차이는 테이블에 있

간단한 작업은 테이블과 동일한 번호의 행,그리고는 동일한 테이블의 구조입니다. 어떤 행이 다른지,어떤 행이 누락되었는지 알고 싶을 때가 있습니다. 물론 두 테이블에 다른 열이있는 경우 특히’동일’이 의미하는 바를 지정해야합니다. 비교를 수행하기로 선택한 방법은 일반적으로 이러한 세부 사항에 의해 결정됩니다.

UNION ALL…그룹의 기술에 의해

고전적인 접근 방식을 비교 테이블을 사용하는 것입UNION ALLSELECTGROUP BYGROUP BY며,기본 키가 이상적입니다. 어느 테이블도 중복 허용되지 않습니다. 서로 다른 수의 행이있는 경우 이러한 행의 차이로 표시됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT DISTINCT au_ID
에서
(
선택 au_ID
에서는
(
선택 au_id,au_lname,au_fname,전화,주소,도시,주,지퍼,계약
에서 저자
UNION ALL
선택 au_id,au_lname,au_fname,전화,주소,도시,주,지퍼,계약
에서 authorsCopy)BothOfEm
그룹에 의해 au_id,au_lname,au_fname,전화,주소,도시,주,지퍼,계약
데 COUNT(*)<2) f

경우 하나의 테이블은 중복입니다,그것은 당신에게 잘못된 결과로 여기,당신은 두 가지는 테이블은 매우 다른 결과를 알려줍니다 당신은 그들이 동일합니다! 이러한 이유로 기본 키를 구성하는 열을 포함하고 행을 한 번만 포함하는 것이 좋습니다!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT COUNT(*),Address_ID,주소,ThePostCode
에서는
(
선택 Address_ID,주소,ThePostCode
에서
(
(9,’929 어거스틴 레인,스테이플 Hill 구 남 Gloucestershire UK’,’BS16 4LL’),
(10,’45 하이 브래드필드 road,Parwich Derbyshire UK’,’DE6 1QN’)
)TableA(Address_ID,주소,ThePostCode)
UNION ALL
선택 Address_ID,주소,ThePostCode
에서
(
(8,”‘의 사과의 일종”,20 글로스터 Pl,Chirton Ward,타인&amp; Wear UK’,’NE29 7AD’),
(8, ”’The Pippins”, 20 Gloucester Pl, Chirton Ward, Tyne &amp; Wear UK’,’NE29 7AD’),
(9, ‘929 Augustine lane, Staple Hill Ward South Gloucestershire UK’,’BS16 4LL’),
(10, ’45 Bradfield road, Parwich Derbyshire UK’,’DE6 1QN’)
) TableB(Address_ID,TheAddress,ThePostCode)
)f
GROUP BY Address_ID,TheAddress,ThePostCode
HAVING COUNT(*)<2

… giving …

1
2
3
4
TheCount Address_ID 주소 ThePostCode
———– ———– ————————- ————
(0 행(s)영향을 받는)

기술을 사용할 수 있 비교하기 위한 두 개 이상의 테이블이 있습니다. 당신만을UNION ALLHAVING절을 필터만 행하지 않는 모든 테이블이 있습니다.

를 제외하고 사용

이제 훨씬 깨끗하고 약간 빠른EXCEPT를 사용할 수 있습니다.

1
2
3
SELECT*from 저자
제외
SELECT*from authorsCopy

이 보여줍니다 모든 행 저자에서 발견되지 않은 authorsCopy. 그들은 경우,동일 그것은 반환하지 않는 행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
au_id au_lname au_fname 전화 주소시에 지퍼 계약
———– ———– ——— ———— ————————– ———– —– —– ——–
041-76-1076 소사 소냐 000-198-8753 29 레크리에이션 서비스/시설을 제공 Omaha CT23243 0
187-42-2491Mc Connell 트 0003090766 279 헤이그의 방법으로 샌디에이고 NY94940 1
220-43-7067 여우스 000-137-9418 269East 헤이그 거리 Richmond VA55027 0
505-28-2848 디 Mitchell001-2479822 73 녹색 Milton 드라이브 노퍽 WA69949 1
697-84-0401Montes Leanne000-018-0454 441 동쪽 오크 파크웨이 호텔 샌안토니오 MD38169 1
727-35-9948 긴 조나단 000-8761152 280 노벨 Avenue 앵커리지 라 NULL1
875-54-8676 돌 케이샤 000-107-1947 763 화이트로 활발하게 활동하고 있 방법 프리몬트 ND08520 0
884-64-5876 켈러 스티븐 000-2787554 45 화이트 노이바 밀워키 NY29108 1
886-75-9197 엘리스 마리 001032-5109 35 동쪽 두 번째 Boulevard Chicago IL32390 1
975-80-3567Salazar Johanna001-028-0716 17 새로운 Boulevard 잭슨 ND71625 0
(10 행(s)영향을)

나만을 사용하여 선택합*간단하게 유지하기 위한 문서입니다. 일반적으로 비교하려는 모든 열을 항목별로 분류합니다.

이 작품에 대한 테이블과 같은 수의 행이기 때문에,경우 저자 했다 추가 행,그것은 여전히 말하는 그들이 다르기 때문에 행 저자에 되지 않은 authorsCopy 이 반환됩니다. 이 때문에EXCEPTEXCEPT피연산자가 없는 쿼리에서 오른쪽에는

이 희망이여 내가 무슨 뜻인지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
선택 Address_ID,주소,ThePostCode
에서
(값
(9,’929 어거스틴 레인,스테이플 Hill 구 남 Gloucestershire UK’,’BS16 4LL’),
(10,’45 하이 브래드필드 road,Parwich Derbyshire UK’,’DE6 1QN’)
)TableA(Address_ID,주소,ThePostCode)
제외
선택 Address_ID,주소,ThePostCode from
(값
(8,”‘의 사과의 일종”,20 글로스터 Pl,Chirton Ward,타인&착용 UK’,’NE29 7AD’),
(8,”‘의 사과의 일종”,20 글로스터 Pl,Chirton Ward, 어폰타인& Wear UK’,’NE29 7AD’),
(9, ‘929 Augustine lane, Staple Hill Ward South Gloucestershire UK’,’BS16 4LL’),
(10, ’45 Bradfield road, Parwich Derbyshire UK’,’DE6 1QN’)
) TableB(Address_ID,TheAddress,ThePostCode)

…yields …

1
2
3
4

Address_ID TheAddress ThePostCode
———– ———————————————- ———–
(0 행(s)영향을)

…반면…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
선택 Address_ID,주소,ThePostCode FROM
(값
(8,”‘의 사과의 일종”,20 글로스터 Pl,Chirton Ward,타인&착용 UK’,’NE29 7AD’),
(8,”‘의 사과의 일종”,20 글로스터 Pl,Chirton Ward, 어폰타인&착용 UK’,’NE29 7AD’),
(9,’929 어거스틴 레인,스테이플 Hill 구 남 Gloucestershire UK’,’BS16 4LL’),
(10,’45 하이 브래드필드 road,Parwich Derbyshire UK’,’DE6 1QN’)
)각(Address_ID,주소,ThePostCode)
제외
선택 Address_ID,주소,ThePostCode
에서
(값
(9,’929 어거스틴 레인,스테이플 Hill 구 남 Gloucestershire UK’,’BS16 4LL’),
(10,’45 하이 브래드필드 road,Parwich Derbyshire UK’,’DE6 1QN’)
)TableA(Address_ID,주소,ThePostCode)

..results in …

1
2
3
4
5

Address_ID TheAddress ThePostCode
———– ————————————————————- ———–
8 ‘The Pippins’, 20 Gloucester Pl, Chirton Ward, Tyne & Wear UK NE29 7AD
(1 row(s) affected)

이 기능의EXCEPTTableATableB. 따라서 테이블에 다른 수의 행이있는 곳에서는 여전히 비교할 수 있습니다.모든 열을 비교하고 싶지 않을 수도 있습니다. ‘동일성’을 결정하기 위해 비교하려는 열을 항상 지정해야합니다. 는 경우를 비교하고 싶었 주소 예를 들어, 다음을 사용할 수 있습니다…

1
2
3
에서 주소 선택 저자
제외
에서 주소 선택 authorsCopy

외부 참여 기술

또한 기술의 외부입니다. 이것은 당신에게 추가 시설을 제공하는보다 일반적인 기술입니다. 예를 들어 전체 외부 조인을 사용하는 경우 두 테이블 모두에서 일치하지 않는 행을 얻을 수 있습니다. 이렇게하면 데이터의 변경에 대한’이전’및’이후’보기가 제공됩니다. 동기화에서 더 일반적으로 사용되어 삭제,삽입 및 업데이트 할 행을 알려줍니다.

We’ll just use the technique to get the altered rows in authorsCopy

1
2
3
4
5
6
7
8
9
10
11
12
13

SELECT authors.au_id, authors.au_lname, authors.au_fname, authors.phone, authors.address, authors.city, authors.state, authors.zip, authors.계약
에서 저자
왼쪽 외부 조 authorsCopy
에 저장합니다.au_ID=AuthorsCopy.au_ID
습니다.au_lname=authorsCopy.au_lname
습니다.au_fname=authorsCopy.au_fname
습니다.전화=저자 복사.전화
및 합체(저자.주소,”)=COALESCE(authorsCopy.주소,”)
및 COALESCE(저자.도시,”)=합체(authorsCopy.도시,”)
및 COALESCE(저자.상태,”)=합체(authorsCopy.주,”)
및 COALESCE(저자.이 코드는 다음과 같습니다.우편 번호,”)
및 저자.계약=저자 복사.계약
어디 authorsCopy.au_ID NULL

당신이 볼 수 있듯이,거기에는 어려움으로 null 이 열은 이 방법으로,하지만 그것은 빨리 다른 사람으로 그것을 당신이 오히려 더 많은 다양성에 대한 비교할 수 있습니다.

테이블 간의 차이점 찾기

어떤 열과 행이 변경되었는지를 보는 빠른 방법이 필요할 수 있습니다. 이 작업을 수행하는 매우 독창적 인 방법이 최근에 출판되었습니다. 그것은 XML 을 사용했다. ‘테이블을 비교하고 Xml 을 사용하여 데이터를 피벗하여 차이점을보고'(편집자 주:더 이상 사용되지 않는 링크). 그것은 영리하지만 너무 느립니다. 같은 일이 순전히 SQL 에서 할 수있다. 기본적으로 키/값 쌍을 사용하여 기본 키를 기반으로 데이터의 열 별 비교를 수행합니다. 는 경우에 당신은 전체를 테이블에서 그것은 오히려 느:는 최고의 트릭은 이렇게만 행 알고 있는 사이에는 차이점이 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
알리는@temp 테이블(au_id VARCHAR(11)기본 키가) /*이 보유하고 기본 키의 행 변경*/
삽입 로@Temp(au_ID)–결정하는 행 변경
선택 au_ID
에서–사용을 제외하고 기술 qhich 에서 가장 빠른 테스트 결
(
선택 au_id,au_lname,au_fname,전화,도시,주,지퍼,
에서 저자
제외
선택 au_id, au_lname,au_fname,전화,주소,도시,주,지퍼,계약
에서 authorsCopy
)f-지금 우리가 선택한 열 변경된
선택 왼쪽.au_id,왼쪽.이름,왼쪽.값으로 원래 오른쪽.값으로 변경된
에(–이제 우리는 그냥 누워서 두 테이블로 키 값 쌍,문자열을 사용하여 버전의 데이터
을 선택 합니다.au_id,’au_lname’으로’이름’,au_lname 로’value’
에서 저자는 내면의 가입하세@Temp 에서 변경 변경됩니다.au_id=습니다.au_id
UNION
을 선택 합니다.au_id,’au_fname’으로’이름’,au_fname 로’value’
에서 저자는 내면의 가입하세@Temp 에서 변경 변경됩니다.au_id=습니다.au_id
UNION
을 선택 합니다.au_id,”전화,전화
에서 저자는 내면의 가입하세@Temp 에서 변경 변경됩니다.au_id=습니다.au_id
UNION
을 선택 합니다.au_id,’주’,주소
에서 저자는 내면의 가입하세@Temp 에서 변경 변경됩니다.au_id=습니다.au_id
UNION
을 선택 합니다.au_id,’도시’으로’이름’,도시로’value’
에서 저자는 내면의 가입하세@Temp 에서 변경 변경됩니다.au_id=습니다.au_id
UNION
을 선택 합니다.au_id,’주’,상태
에서 저자는 내면의 가입하세@Temp 에서 변경 변경됩니다.au_id=습니다.au_id
UNION
을 선택 합니다.au_id,’지’,지
에서 저자는 내면의 가입하세@Temp 에서 변경 변경됩니다.au_id=습니다.au_id
UNION
을 선택 합니다.au_id,’계약’,변환(CHAR(1),계약)
에서 저자는 내면의 가입하세@Temp 에서 변경 변경됩니다.au_id=습니다.au_id)왼손
내부 조(
선택 authorsCopy.au_id,’au_lname’으로’이름’,au_lname 로’value’
에서 authorsCopy 내부 조@Temp 에서 변경 변경됩니다.au_id=authorsCopy.au_id
UNION
선택 authorsCopy.au_id,’au_fname’,au_fname
에서 authorsCopy 내부 조@Temp 에서 변경 변경됩니다.au_id=authorsCopy.au_id
UNION
선택 authorsCopy.au_id,”전화,전화
에서 authorsCopy 내부 조@Temp 에서 변경 변경됩니다.au_id=authorsCopy.au_id
UNION
선택 authorsCopy.au_id,’주’,주소
에서 authorsCopy 내부 조@Temp 에서 변경 변경됩니다.au_id=authorsCopy.au_id
UNION
선택 authorsCopy.au_id,’도시’으로’이름’,도시로’value’
에서 authorsCopy 내부 조@Temp 에서 변경 변경됩니다.au_id=authorsCopy.au_id
UNION
선택 authorsCopy.au_id,’주’,상태
에서 authorsCopy 내부 조@Temp 에서 변경 변경됩니다.au_id=authorsCopy.au_id
UNION
선택 authorsCopy.au_id,’지’,지
에서 authorsCopy 내부 조@Temp 에서 변경 변경됩니다.au_id=authorsCopy.au_id
UNION
선택 authorsCopy.au_id,’계약’,변환(CHAR(1),계약)
에서 authorsCopy 내부 조@Temp 에서 변경 변경됩니다.au_id=authorsCopy.au_id)오른쪽
왼쪽에.au_ID=오른쪽.au_ID
그리고 왼쪽.이름=오른쪽.이름
는 왼쪽.나는 이것이 내가하는 일이 아니라는 것을 알고 싶다.값

에서 우리를 들어,이:

1
2
3
4
5
6
7
8
9
10
11
12
au_id 이름이 원래의 변경
———– ——– —————————- ————————————
041-76-1076 주소 29 레크리에이션 서비스/시설을 제공 9 레크리에이션 서비스/시설을 제공
187-42-2491 주소 279 헤이그의 방법 79 헤이그는 방법
220-43-7067 주소 269East 헤이그 거리 69East 헤이그 거리
505-28-2848 주소 73 녹색 Milton 드라이브 3 녹색 Milton 드라이브
697-84-0401 주소 441 동쪽 오크 파크웨이 41 동쪽 오크 파크웨이
727-35-9948 주소 280 노벨 Avenue80 노벨 Avenue
875-54-8676 주소 763 화이트로 활발하게 활동하고 있는 방법 63 화이트로 활발하게 활동하고 있는 방법
884-64-5876 주소 45 화이트 노이바이 5 백 노벨 Boulevard
886-75-9197 주소 35 동쪽 두 번째 5Boulevard East 두 번째 Boulevard
975-80-3567 주소 17 새로운대 7 개의 새로운 Boulevard

이 기술을 회전하는 행 테이블의 차이가 있으로 Entity-속성-가치(EAV)테이블도록 차이는 이내에 행 비교할 수 있습하고 표시합니다. 각 열의 이름과 문자열 값을UNIONing 로이 회전을 수행합니다. 이 기술은 많은 수의 차이가없는 곳에서 가장 잘 작동합니다.

결론

테이블이나 결과의 데이터를 비교하는 단일 이상적인 방법은 없습니다. 기술의 숫자 중 하나는 특정 작업에 가장 관련이있을 것입니다. 그것은 정확하게 당신이 필요로하는 답변과 작업의 유형에 이르기까지 모든 것입니다. 테이블이 변경되지 않았는지 빠르게 확인해야합니까,아니면 변경 사항이 무엇인지 정확하게 알아야합니까? SQL 은 자연스럽게이 작업을 수행하는 속도가 빠르며 테이블과 결과의 비교는 많은 데이터베이스 개발자에게 친숙한 작업입니다.

있는 경우에는 원칙,내가 말하는 예비 또는 임시 작업이 필요한 도구와 같은 SQL 데이터를 비교하는 반면,일상적인 프로세스 데이터베이스 내에서 필요로 손으로 컷 SQL 기술입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다