ほとんどを除くすべての行についてMySQLクエリをDBで使用して値を挿入する方法
-
21-12-2019 - |
質問
私は以下のように約6000行のDBテーブル構造を持っています:。
carrier|make|model
.
私の必要性は、ほとんどを除くすべてのキャリアのメイクモデルペアを挿入できるようにSQLクエリを作成することです(ATT、Bell-Mobility、Virgin Canada、保証ATT)。
どうやってこれを行うことができますか?
解決
INSERT INTO table_name (carrier, make, model)
SELECT DISTINCT carrier, "Samsung", "Galaxy S5"
FROM table_name
WHERE carrier NOT IN ( 'ATT', 'bell-mobility', 'virgin Canada', 'Warranty ATT' )
.
複数の新しいMECKとモデルを追加することができます。
INSERT INTO table_name (carrier, make, model)
SELECT a.carrier, b.make, b.model
FROM (SELECT DISTINCT carrier
FROM table_name
WHERE carrier NOT IN ( 'ATT', 'bell-mobility', 'virgin Canada', 'Warranty ATT' ) AS a
CROSS JOIN
(SELECT "Samsung" AS make, "Galaxy 5" AS model
UNION
SELECT "Nokia" AS make, "Lumia" AS model
...
) AS b
.
BTW、この問題はあなたがデータベース設計が悪いことを示唆しています。あなたが知っているすべてのキャリアをリストするキャリアのテーブルを持つべきです、あなたは各キャリアのMICSとモデルをリストしたテーブルからそれを取得するべきではありません。これは正規化が悪い例です。キャリアの携帯電話の供給を停止した場合は、存在することを完全に忘れます。
他のヒント
MySQL INSERT構文 - http://dev.mysql.com/doc/refman/5.6/en/enert.html
PHPについて話している場合は、このページを見てください。 http://www.w3schools.com/php/php_mysql_insert.asp
編集:
良い解決策は見つけることができますここ
上記の解決策を使用している場合、結果は次のようなものになるはずです。
INSERT INTO table ("carrier", "make", "model")
SELECT DISTINCT carrier, make, model
FROM `table2` AS o
WHERE o.name NOT
IN ( "ATT", "bell-mobility", "virgin Canada", "Warranty ATT" )
. 所属していません StackOverflow