Pregunta SQL Insertar múltiples filas con una columna siempre iguales y una columna diferente


¿Hay una manera rápida de insertar valores múltiples en una columna mientras que la segunda columna tiene un valor diferente?

Digamos que tengo dos columnas llamadas Number y Colour. los Number columna siempre va a ser 1 y la Colour cambios de columna.

Por el momento estoy haciendo lo siguiente ...

INSERT INTO ColourTable(Number, Colour)

SELECT '1' ,'red'

UNION ALL

SELECT '1' ,'yellow'

UNION ALL

SELECT '1' ,'green'

UNION ALL

SELECT '1' ,'blue'

UNION ALL

SELECT '1' ,'orange'

Lo cual está bien si solo quedan algunas inserciones, pero el problema es que necesito insertar unas 100 filas con el cambio de la columna de colores y me preguntaba si había alguna manera de configurar la columna de números.

** Creo que necesito explicarme un poco mejor ...

digamos que las columnas de colores tienen 40 colores diferentes, necesito insertar estos colores en diferentes filas con la columna numérica que dice, por ejemplo, 1 a 100 (el número en realidad son códigos randon, por lo que el incremento no funcionará).

Entonces tengo que hacer 40 inserciones de las filas de colores con el número de columna = 1 40 inserciones con el número de columna = 2 40 inserciones con el número de columna = 3 y así sucesivamente hasta 100


6
2018-06-15 09:31


origen


Respuestas:


Si entiendo la pregunta correctamente, entonces estás buscando todas las combinaciones de tu campo de código aleatorio y campo de color.

Entonces, por ejemplo, si tiene tres colores rojo, verde y azul y 3 códigos aleatorios 1, 14, 25, entonces le gustaría el siguiente conjunto.

1   red
1   green
1   blue
14  red
14  green
14  blue
25  red
25  green
25  blue

Si este es el caso, entonces podría producir un par de tablas, una con los códigos, la otra con los colores

CREATE TABLE #Codes(
    [CodeNumber] int NOT NULL
) 

Insert Into #Codes 
Select 1
Union All
Select 14
Union All
Select 25



CREATE TABLE #Colours(
    [Colour] varchar(50) NOT NULL
) 

Insert Into #Colours 
Select 'red'
Union All
Select 'green'
Union All
Select 'blue'

Luego use una unión cruzada para regresar todas las combinaciones.

Select cd.CodeNumber, cl.Colour
From #Codes cd
    Cross Join #Colours cl

2
2018-06-15 10:18



Póngalos en subselecciones separadas, y permita una unión cruzada (,) que se produzca:

INSERT INTO ColourTable(Number, Colour)
SELECT Num.n,Col.c FROM
 (select '1') Num(n),

 (select 'red' union all
  select 'yellow' union all
  select 'green' union all
  select 'blue' union all
  select 'orange') Col(c)

1
2018-06-15 09:42



Tal vez podrías establecer el DEFAULT valor de la Number columna a 1 ¿Antes de insertar tus filas, y eliminarla después?


0
2018-06-15 09:34



INSERT INTO ColourTable(Number, Colour)
SELECT '1' , Col.c FROM
 (select 'red' union all
  select 'yellow' union all
  select 'green' union all
  select 'blue' union all
  select 'orange') Col(c)

0
2018-03-04 21:37