¿Puedo volver a ordenar columnas en una tabla?

votos
77

Si agrego una columna a una tabla en Microsoft SQL Server, ¿puedo controlar dónde se muestra la columna lógicamente en las consultas?

No quiero meterme con el diseño físico de las columnas en el disco, pero me gustaría agrupar lógicamente las columnas cuando sea posible para que herramientas como SQL Server Management Studio enumeren los contenidos de la tabla de una manera conveniente.

Sé que puedo hacerlo a través de SQL Management Studio yendo a su modo de diseño para tablas y arrastrando el orden de las columnas, pero me gustaría poder hacerlo en SQL sin procesar para poder realizar el pedido. con guiones desde la línea de comando.

Publicado el 04/08/2008 a las 22:37
fuente por usuario
En otros idiomas...                            


8 respuestas

votos
61

No puede hacer esto programáticamente (de una manera segura) sin crear una nueva tabla.

Lo que Enterprise Manager hace cuando se compromete a un reordenamiento es crear una nueva tabla, mover los datos y luego eliminar la tabla anterior y cambiar el nombre de la nueva tabla al nombre existente.

Si quiere sus columnas en un orden / agrupación particular sin alterar su orden físico, puede crear una vista que puede ser lo que desee.

Respondida el 04/08/2008 a las 22:54
fuente por usuario

votos
35

Creo que lo que todo el mundo aquí es que falta, es que, aunque no todo el mundo tiene que lidiar con los años 10, los años 20, o instancias del mismo sistema de software instalado en todo el país y del mundo de 1000 ... software de aquellos de nosotros que el diseño se vende comercialmente hacerlo. Como resultado de ello, ampliamos sistemas a través del tiempo, expanda tablas agregando campos ya que se necesita nueva capacidad, y como esos campos se identifican pertenecemos en una tabla existente, y como tal, más de una década de expansión, crecimiento, la adición de campos, etc. a las tablas y .... luego tener que trabajar con esas mesas de diseño, para apoyar, a veces en la excavación de datos sin procesar / solución de problemas para depurar errores nuevos funcionalidad .... es increíblemente agravante de no contar con la información primaria que desea ver en el primer puñado de campos, en los que puede tener tablas con 30-40-50 o hasta 90 campos y sí en una base de datos estrictamente normalizada.

A menudo he deseado poder hacer esto, por esta misma razón. Pero corto de hacer exactamente lo que hace SQL, La construcción de un script de creación de una nueva Mesa de la forma que yo quiero, escribir el Insertar para que, a continuación, dejar caer todas las existentes restricciones, relaciones, llaves, índice, etc, etc, etc de la mesa y el cambio de nombre existente la "nueva" tabla de nuevo al viejo nombre, y después de leer todas las personas claves, relaciones, índices, etc, etc ....

No sólo es tediosa, consume mucho tiempo, pero ... en cinco años más, tendrá que pasar de nuevo ....

Es tan cerca de la pena que la enorme cantidad de trabajo, sin embargo, el punto es ... que no será la última vez que tenemos esta capacidad, ya que nuestros sistemas continúen creciendo, expandiéndose, y obtener campos en un Wacked ordenado impulsado por adiciones necesidad / diseño.

La mayoría de los desarrolladores piensan desde un único punto de vista del sistema que sirve una sola empresa o de mercado muy específico duro de la caja.

El "off-the-shelf" pero significativamente diseñadores progresistas y líderes del desarrollo en su espacio de mercado siempre tendrá que hacer frente a este problema, una y otra vez ..... amaría a una solución creativa si alguien tiene uno. Esto fácilmente podría salvar mi compañía de una docena de horas a la semana, simplemente no tener que desplazarse más, o recordar dónde "que" el campo está en la tabla de datos de origen ....

Respondida el 01/02/2013 a las 01:10
fuente por usuario

votos
5

Si entiendo tu pregunta, quieres afectar qué columnas se devuelven primero, segundo, tercero, etc. en las consultas existentes , ¿verdad?

Si todas sus consultas están escritas con SELECT * FROM TABLE- entonces aparecerán en el resultado tal como están establecidas en SQL.

Si sus consultas están escritas con SELECT Field1, Field2 FROM TABLE- no importa el orden en que se encuentran en SQL.

Respondida el 06/08/2008 a las 16:42
fuente por usuario

votos
1
  1. Escritura de la tabla existente a una ventana de consulta.
  2. Ejecutar esta secuencia de comandos en una base de datos de prueba (eliminar el uso declaración)
  3. SSMS utilizar para hacer la columna de cambios que necesita
  4. Haga clic en Generar Cambio de secuencias de comandos (a la izquierda icono más y más inferior en la barra de botones, por defecto)
  5. Utilice esta secuencia de comandos en su mesa real

Todo el guión realmente hace es crear una segunda tabla tabla con las órdenes de columna deseada, copia todos los datos en él, cae la tabla original y luego cambia el nombre de la tabla secundaria para tomar su lugar. Esto salva que escribir usted mismo, aunque si quieres un script de despliegue.

Respondida el 08/03/2016 a las 11:31
fuente por usuario

votos
1

Hay una manera, pero es sólo temporalmente por la propia consulta. Por ejemplo,

Digamos que tiene 5 mesas. Tabla se llamaT_Testing

Nombre, Apellido, Fax, Correo electrónico y MEMBER_ID

usted quiere que la lista de su identificación, a continuación, Apellido, a continuación, Nombre, Teléfono y luego enviarlos por correo electrónico.

Puede hacerlo de acuerdo con la Selección.

Select Member_ID, LastName, FirstName, PhoneNumber, Email
From T_Testing

Aparte de eso, si lo que desea el Apellido aquí para ver antes del primer nombre, por alguna razón, puede hacerlo también de la siguiente manera:

Select LastName, *
From T_Testing

La única cosa que usted quiere estar seguro de que lo que haces es que el OrdenarPor o cuya función debe ser denotado como table.column si se va a utilizar una Dónde o OrdenarPor

Ejemplo:

Select LastName, *
From T_Testing
Order By T_Testing.LastName Desc

Espero que esta ayuda, lo he descubierto porque tenía que hacerlo yo mismo.

Respondida el 06/11/2014 a las 18:08
fuente por usuario

votos
1

Se puede hacer usando SQL, modificando las tablas del sistema directamente. Por ejemplo, mira aquí:

Alterar tabla - Agregar nueva columna en el medio

Sin embargo, no recomendaría jugar con tablas del sistema, a menos que sea absolutamente necesario.

Respondida el 05/10/2008 a las 21:34
fuente por usuario

votos
1

Cuando Management Studio lo hace, está creando una tabla temporal, copiando todo, eliminando la tabla original y cambiando el nombre de la tabla temporal. No existe una declaración T-SQL simple y equivalente.

Si no le apetece hacer eso, siempre puede crear una vista de la tabla con las columnas en el orden que desee y usarla?

Editar: ¡golpeado!

Respondida el 04/08/2008 a las 23:00
fuente por usuario

votos
0

No es posible cambiar el orden de las columnas sin necesidad de recrear toda la tabla. Si usted tiene unos pocos casos de solamente la base de datos, se puede utilizar para este SSMS (Seleccione la tabla y haga clic en "diseño").

En caso de que tenga demasiados casos para un proceso manual, usted debe tratar de este script: https://github.com/Epaminaidos/reorder-columns

Respondida el 03/09/2016 a las 07:56
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more