Cómo insertar un valor utilizando la consulta MySQL en DB para todas las filas, excepto pocos

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

  •  21-12-2019
  •  | 
  •  

Pregunta

Tengo una estructura de tabla DB con alrededor de 6000 filas como se indica a continuación :.

carrier|make|model

Mi necesidad es crear una consulta de SQL para que pueda insertar un par de modelos de make-modelo para todos los transportistas, excepto pocos (digamos ATT, Bell-Mobility, Virgin Canada y Garanty ATT).

¿Cómo puedo hacer esto?

¿Fue útil?

Solución

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

Para agregar múltiples marcas nuevas y modelos que puede hacer:

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

Por cierto, esta pregunta sugiere que tiene un diseño de base de datos deficiente.Debe tener una tabla de portadores que enumere a todos los transportistas que conoce, no debe obtenerlo de la mesa que enumera las marcas y modelos para cada operador.Este es un ejemplo de la mala normalización, porque si alguna vez dejas de suministrar teléfonos para algún transportista, olvidarás totalmente que existen.

Otros consejos

MySQL Insertar Sintaxis - http://dev.mysql.com/doc/refman/5.6/en/insert.html

Si está hablando de PHP, eche un vistazo a esta página: http://www.w3schools.com/php/php_mysql_insert.asp

Editar:

Se puede encontrar una buena solución aquí .

y si usa la solución anterior, el resultado debe ser algo así:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top