2012-03-12 24 views
11

Escribí una solicitud para la vivienda de residentes en una universidad. En una de las mesas (habitaciones) tengo una lista de todas las habitaciones y su ocupación actual/máxima. Ahora, agregué una nueva columna llamada "semestre" y configuré todas las filas existentes para que tengan un valor semestral de "caída". Ahora quiero copiar y pegar todas estas filas en la tabla pero cambiar el valor del semestre a "primavera". El resultado debería ser el doble de filas con las que comencé, la mitad con el valor del semestre y la mitad con el otoño. ¿Se pregunta cuál es la mejor manera de lograr esto?Copie y pegue filas en la misma tabla SQL con diferentes valores

Respuesta

20
INSERT INTO rooms 
(roomname, current_occupancy, max_occupancy, semester) 
SELECT roomname, current_occupancy, max_occupancy,'spring' 
FROM rooms 
WHERE [semester]='fall' 

(asumiendo nombres para su habitación y ocupación columnas)

4
Insert Into Rooms 
    Select col1, col2, col3, 'Spring' as Semester -- select each column in order except 'Semester', pass it in literally as 'Spring' 
    From rooms where 
    Semester = 'Fall' 
1

Bueno, si usted está tratando de hacer esto dentro de SQL Server Management Studio se podría copiar la tabla, ejecute un comando de actualización y configure el semestre para saltar en la tabla clonada, luego use el asistente para anexar los datos de la tabla clonada a la tabla existente.

Si conoce un lenguaje de programación, puede extraer todos los datos, modificar el semestre y luego insertar los datos en la tabla existente.

Nota: Las otras respuestas son una forma mucho mejor de lograr esto.

5

Utilice una tabla temporal para hacerlo simple, sin importar cuántas columnas estén involucradas;

SELECT * INTO #ROOMS FROM ROOMS; 
UPDATE #ROOMS SET SEMESTER='spring'; 
INSERT INTO ROOMS SELECT * FROM #ROOMS; 
Cuestiones relacionadas