[mysql] MySQL : SQL 쿼리의 각 결과에 대한 레코드를 삽입하는 방법은 무엇입니까?

내가 선택했다고 말해

SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo';

일부 레코드를 반환합니다.

결과 세트에서 도달 행에 대한 삽입을 어떻게 할 수 있습니까?

INSERT INTO config (id, customer_id, domain) VALUES (@id, @customer_id, 'www.example.com');

여기서 @id@customer_id결과 집합의 행의 필드는?

편집 : 나는 그것을 복제하고 싶지 않았지만 domain대신 필드에 새 값을 삽입하십시오 . 그럼에도 불구하고 평범한 얼굴 손바닥 상황 😉 감사합니다!



답변

다음과 같이 간단합니다.

INSERT INTO config (id, customer_id, domain)
SELECT DISTINCT id, customer_id, domain FROM config;

www.example.com“을 도메인으로 원하는 경우 다음 을 수행 할 수 있습니다.

INSERT INTO config (id, customer_id, domain)
SELECT DISTINCT id, customer_id, 'www.example.com' FROM config;


답변

INSERT INTO config (id, customer_id, domain)
SELECT id, customer_id, 'www.example.com' FROM (
  SELECT DISTINCT id, customer_id, domain FROM config
  WHERE type = 'foo'
) x;


답변

INSERT INTO Config (id, customer_id, domain)
SELECT DISTINCT id, customer_id, 'www.example.com' FROM config

이 구문에 대한 MySQL 설명서는 다음과 같습니다.

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html


답변

편집 -@Krtek의 답변에 대한 의견을 읽은 후.

삽입 대신 업데이트를 요청하는 것 같습니다.

update config set domain = 'www.example.com'

이렇게하면 중복 항목을 만들지 않고 도메인이 ‘www.example.com’인 구성 테이블의 모든 기존 레코드가 업데이트됩니다.

오래된 답변

다음과 같이 사용할 수 있습니다.

INSERT INTO config (id, customer_id, domain)
select id, customer_id, domain FROM config

참고 :-ID가 기본 키로 있으면 작동하지 않습니다.


답변

다음 SQL 문을 실행합니다.

-- Do nothing.

“config”에서 고유 한 행을 선택하고 동일한 행을 동일한 테이블에 삽입하려고합니다. 그들은 이미 거기에 있습니다. 할 것이 없다.

실제로 “도메인”열의 일부 또는 모든 값을 업데이트하려는 경우가 아니면. 실제로 뭔가를 한 UPDATE 문이 필요합니다.


답변