나는 표 아래와 같이 있다고 가정UPDATE MySQL은 다른 테이블의 데이터를 하나 개의 컬럼
CREATE TABLE IF NOT EXISTS table1
(
table1_id INT NOT NULL,
field1 INT DEFAULT NULL,
field2 INT DEFAULT NULL,
FOREIGN KEY (field1) REFERENCES fields(field_id),
FOREIGN KEY (field2) REFERENCES fields(field_id),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
과 표 2 :
CREATE TABLE IF NOT EXISTS table2
(
table2_id INT NOT NULL,
another_id INT NOT NULL,
field1 INT DEFAULT NULL,
PRIMARY KEY (table2_id , another_id),
FOREIGN KEY (another_id) REFERENCES table1(table1_id),
FOREIGN KEY (field1) REFERENCES fields(field_id),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
내가 데이터 열 table1_id
가득했다 , field1
, 표 1의 field2
및 표 2의 table2_id
, another_id
.
내가하고 싶은 일은 표 2의 field1
열의 데이터로 채우는 것입니다. 문제는 table1의 field1
값이거나 table1의 field2
값이기를 원합니다. 나는 그것을 무작위로 원한다. 만약 그들 중 하나가 NULL이라면 다른 하나를 선택하고, 둘다 있다면 그냥 NULL을 넣으십시오.
간단히 몇 가지 UPDATES 쿼리를 만들고 올바르게 처리 할 수 있습니까? 불행히도 나는 table2가 5k 개 이상의 행을 가지고 있고 5k UPDATE 쿼리를 수행 할 수 없다. 또한 MySQL이 위에서 설명한 것처럼 table1의 두 필드 중 무작위로 하나를 선택하도록하는 방법에 대해서는 정확히 알지 못합니다. 어떻게 그것이 될지에 대한 예제 쿼리를 아래에 설명하겠습니다.
UPDATE table2 SET table2.field1 = (SELECT table1.field1 FROM table1 WHERE table1_id = another_id) WHERE another_id = X;
(임의의 조건에서 결과가 필드 1을 선택하는 것이라고 가정 나는 내 쿼리에서 그 밖으로 떠날거야, 그래서 무작위 열에서 조건으로 선택하는 방법을 잘 모릅니다)
나는 많은 다른 X를 위해 위의 과정을 반복해야 할 것이다.
따라서 field1 of table2
을 field1 or field2 from table1
으로 여러 X 값에 대해 위에서 설명한 조건으로 채우는 방법이 궁금하십니까?
당신이 anwser를 편집하려면 내가 그것을 받아 들일 수 있도록 당신의 '널이 아닌'부분을 추가하지 않은 : 좋아 –
을 내 편집 된 답변을 참조하십시오. – kmoser