MySQL: How to insert a record for each result in a SQL query?

前端 未结 5 1480
情话喂你
情话喂你 2021-01-30 12:36

Say I have a select

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

which returns some records.

How can I do

相关标签:
5条回答
  • 2021-01-30 12:52

    As simple as this :

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

    If you want "www.example.com" as the domain, you can do :

    INSERT INTO config (id, customer_id, domain) 
    SELECT DISTINCT id, customer_id, 'www.example.com' FROM config;
    
    0 讨论(0)
  • 2021-01-30 12:54
    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;
    
    0 讨论(0)
  • 2021-01-30 12:55
    INSERT INTO Config (id, customer_id, domain)
    SELECT DISTINCT id, customer_id, 'www.example.com' FROM config
    

    The MySQL documentation for this syntax is here:

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

    0 讨论(0)
  • 2021-01-30 13:01

    Execute this SQL statement:

    -- Do nothing.
    

    You want to select distinct rows from "config", and insert those same rows into the same table. They're already in there. Nothing to do.

    Unless you actually just want to update some or all of the values in the "domain" column. That would require an UPDATE statement that really did something.

    0 讨论(0)
  • 2021-01-30 13:07

    EDIT- After reading comment on @Krtek's answer.

    I guess you are asking for an update instead of insert -

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

    This will update all existing records in config table with domain as 'www.example.com' without creating any duplicate entries.

    OLD ANSWER -

    you can use something like -

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

    Note:- This will not work if you have id as primary key

    0 讨论(0)
提交回复
热议问题