私が選択したと言う
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
に新しい値を挿入します。それにもかかわらず、それは非常に簡単であるため、facepalm-situation ;-)ありがとう!
これと同じくらい簡単:
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ドキュメントは次のとおりです。
[〜#〜] edit [〜#〜]-@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がある場合、これは機能しません