Come inserire un valore utilizzando la query MySQL in DB per tutte le righe tranne poche

StackOverflow https://stackoverflow.com//questions/24012878

  •  21-12-2019
  •  | 
  •  

Domanda

Ho una struttura da tavolo DB con circa 6000 righe come indicato di seguito :.

carrier|make|model
.

La mia necessità è creare una query SQL in modo tale che posso inserire una coppia di modelli di marca per tutti i corrieri tranne pochi (dire ATT, Bell-Mobility, Virgin Canada e garanzia ATT).

Come posso averlo fatto?

È stato utile?

Soluzione

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' )
.

Per aggiungere più nuovi marchi e modelli che puoi fare:

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, questa domanda suggerisce di avere un povero design di database.Dovresti avere un tavolo di vettori che elenca tutti i corrieri che conosci, non dovresti ottenerlo dalla tabella che elenca i marchi e i modelli per ogni corriere.Questo è un esempio di scarsa normalizzazione, perché se smetti di fornire telefoni per un po 'di carrier, dimenticherai totalmente che esistono.

Altri suggerimenti

mysql insert syntax - http://dev.mysql.com/doc/refman/5.6/en/insert.html

Se stai parlando di PHP, dai un'occhiata a questa pagina: http://www.w3schools.com/php/php_mysql_insert.asp

Modifica:

Una buona soluzione può essere trovata qui .

E se usi la soluzione di cui sopra, il risultato dovrebbe essere simile a:

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"  )
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top