기존 테이블에 고유 키를 추가하는 방법(비고유 행 포함)
기존 테이블에 복잡한 고유 키를 추가하고 싶습니다.키에는 4개의 필드가 포함됩니다(user_id
,game_id
,date
,time
). 단, 테이블에 고유하지 않은 행이 있습니다.중복된 날짜를 모두 삭제하고 그 이후에 복잡한 키를 추가할 수 있다는 것을 알았습니다.
중복된 데이터를 모두 검색하지 않고 다른 솔루션이 존재할 수 있습니다.(예를 들어 add unique ignore 등).
UPD가 검색한 결과 중복된 mysql 행을 삭제하는 방법은 좋은 솔루션인 것 같습니다.MySQL 쿼리만 사용하여 중복을 제거하시겠습니까?
yAnTar의 조언대로 할 수 있습니다.
ALTER TABLE TABLE_NAME ADD Id INT AUTO_INCREMENT PRIMARY KEY
또는
제약조건을 추가할 수 있습니다.
ALTER TABLE TABLE_NAME ADD CONSTRAINT constr_ID UNIQUE (user_id, game_id, date, time)
하지만 기존 데이터를 잃지 않으려면 들여쓰기 열을 추가하고 복합 키를 만들면 될 것 같습니다.
적절한 구문은 다음과 같습니다.ALTER TABLE Table_Name ADD UNIQUE (column_name)
예
ALTER TABLE 0_value_addition_setup ADD UNIQUE (`value_code`)
저도 비슷한 문제를 풀어야 했어요.MS Access에서 프라이머리 키가 없는 레코드가 거의 15,000개 있는 대규모 소스 테이블을 상속받았습니다.이 테이블을 정규화하고 케이크를 만들어야 했습니다.PHP 호환.케이크의 1가지 컨벤션PHP는 모든 테이블이 프라이머리 키를 가지며 첫 번째 컬럼이며 'id'라고 불립니다.MySQL 5.5에서는 다음과 같은 간단한 문장이 도움이 되었습니다.
ALTER TABLE `database_name`.`table_name`
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (`id`);
기존 데이터("FIRST" 키워드) 앞에 정수 형식의 새 열 'id'가 추가되었습니다.AUTO_INCREMENT 키워드를 지정하면 ID가 1부터 증가합니다.이제 모든 데이터 집합에는 고유한 숫자 ID가 있습니다(AUTO_INCREMENT 문이 없으면 모든 행에 ID = 0이 채워집니다).
귀사의 비즈니스 논리를 가정하여 솔루션을 제공합니다.기본적으로는 사용자-게임 조합에 대해 하나의 레코드만 테이블에 저장할 수 있습니다.그래서 테이블에 복합 키를 추가합니다.
PRIMARY KEY (`user_id`,`game_id`)
자동 증분 ID 또는 UNIQURE ID를 생성하여 4개의 필드에서 설명하는 자연 키에 추가합니다.이렇게 하면 테이블의 모든 행이 고유해집니다.
Multiple Unique 키를 테이블로 설정
ALTER TABLE table_name
ADD CONSTRAINT UC_table_name UNIQUE (field1,field2);
MySQL의 경우:
ALTER TABLE MyTable ADD MyId INT AUTO_INCREMENT PRIMARY KEY;
ColumnName에 고유하지 않은 값이 있는 경우 고유 인덱스를 추가합니다.이것을 시험해 보세요.
CREATE UNIQUE INDEX [IDX_Name] ON yourTableName (yourColumnName) WHERE [id]>1963 --1963 is max(id)-1
이제 테스트에 사용할 수 있는 값을 삽입해 보겠습니다.
언급URL : https://stackoverflow.com/questions/15255304/how-add-unique-key-to-existing-table-with-non-uniques-rows
'itsource' 카테고리의 다른 글
부분 및 템플릿의 복잡한 중첩 (0) | 2022.11.14 |
---|---|
XAMPP에서 2개의 PHP 버전을 사용하는 방법이 있습니까? (0) | 2022.11.14 |
Java가 히프 크기(또는 도커 메모리 제한 크기)보다 훨씬 많은 메모리를 사용합니다. (0) | 2022.11.05 |
mysql 액세스 거부 이벤트허가 권한이 존재함 (0) | 2022.11.05 |
객체가 비어 있습니까? (0) | 2022.11.05 |