source

MySQL: SQL 쿼리에 각 결과의 레코드를 삽입하려면 어떻게 해야 합니까?

gigabyte 2022. 10. 20. 21:52
반응형

MySQL: SQL 쿼리에 각 결과의 레코드를 삽입하려면 어떻게 해야 합니까?

선택사항이 있다고 합니다.

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

몇 가지 기록이 반환됩니다.

결과 세트의 reach 행에 대해 다음과 같이 삽입하려면 어떻게 해야 합니까?

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"에서 다른 행을 선택하고 동일한 행을 동일한 테이블에 삽입할 수 있습니다.그들은 이미 저 안에 있어요할 것이 없다.

"domain" 열의 일부 또는 모든 값을 업데이트하려는 경우를 제외하고.그러기 위해서는 실제로 어떤 일을 한 UPDATE 스테이트먼트가 필요합니다.

언급URL : https://stackoverflow.com/questions/5247530/mysql-how-to-insert-a-record-for-each-result-in-a-sql-query

반응형