설명에서 정확히 무엇을 의미 하는지를 추측하기는 어렵습니다. 몇 줄의 예제 라인을 보여 주면 포함시킬 라인과 제외시킬 라인을 보여 주면 도움이 될 것입니다.
그러나 SELECT의 WHERE 절에 다양한 조건을 추가 할 수 있습니다. 예를 들어, 당신은 그냥 가져 오기에 적어도 하나의 열이 null이 아닌이 있는지 확인하려면, 당신이 할 수 있습니다 :
INSERT INTO Contact(FirstName, Surname, Position, TelephoneNo,
EmailAddress, RegisteredDate)
SELECT DISTINCT FirstName, SecondName, JobTitle,
ContactTelNumber, EmailAddress, RegistrationDate
FROM Import
WHERE COALESCE(FirstName, SecondName, JobTitle, ContactTelNumber,
EmailAddress, RegistrationDate) IS NOT NULL
COALESCE은() 인수의 변수 번호를 승인하는 함수이며, 반환 최초의 null 이외의 인수 모든 인수가 널 (NULL)이면 널 (NULL)을 리턴합니다. 따라서 우리가 을 모두 합쳐서 열을 얻으면 null을 얻습니다. 그러면 모든 열이 null이고 그 열을 제외한다는 것을 알 수 있습니다. 귀하의 코멘트를 다시
: 당신은 전체 행에 걸쳐 고유 제한 조건을 원하는처럼
좋아, 그것은 소리, 당신은 고유 제한 조건을 위반하지 않는 행만 복사 할.
ALTER TABLE Contact ADD UNIQUE KEY (FirstName, Surname, Position, TelephoneNo,
EmailAddress, RegisteredDate);
INSERT IGNORE INTO Contact(FirstName, Surname, Position, TelephoneNo,
EmailAddress, RegisteredDate)
SELECT DISTINCT FirstName, SecondName, JobTitle,
ContactTelNumber, EmailAddress, RegistrationDate
FROM Import;
, 삽입은 중복 행과 같은 오류가 발생하면 삽입하지 않는 수단을 무시뿐만 아니라의 삽입을 중단하지 않습니다 이러한 목표를 달성하기 위해
한 가지 방법은 다음과 같이 될 것이다 다른 행.
고유 제한 조건은 인덱스를 생성하므로 테이블 크기에 따라 ALTER TABLE을 실행하는 데 약간의 시간이 걸립니다.
또한 많은 열을 포함하는 키를 갖는 것은 실용적이지 않을 수 있습니다. 인덱스의 길이는 16 컬럼이고 전체 길이는 1000 바이트입니다. 그러나, 나는 당신이 정말로 원하는 것이 EmailAddress 또는 열의 다른 하위 집합마다 하나의 행으로 제한한다는 것을 기대합니다.
안녕하세요 테이블이 다른 테이블 내의 외부 필드로 사용되므로 빈 행 하나만 갖고 싶습니다. 나는 다음을 시도해 봤지만 빈 줄이 있고 모두 같은 레코드를 삽입한다. 나는이 선들 중 하나만 필요로한다. – tjhack
고유 Import.FirstName를 선택 연락 (FIRSTNAME, 성, 위치, TelephoneNo, EmailAddress를, RegisteredDate)에 삽입 Import.SecondName는 Import.JobTitle는 Import.ContactTelNumber는, NOT이 존재하는 Import.EmailAddress, Import.RegistrationDate 가져 오기 FROM (SELECT 1 FROM Contact.FirstName = Import.FirstName 및 Contact에 문의하십시오.성 = Import.SecondName 및 Contact.Position = Import.JobTitle \t \t \t \t \t 및 Contact.TelephoneNo = Import.ContactTelNumber 및 Contact.EmailAddress = Import.EmailAddress 및 Contact.RegisteredDate = Import.RegistrationDate) – tjhack