Sí y no :-)
SQL en sí no importa el orden de las columnas salen en pero, si se fuera a utilizar:
select age, name, sex from ...
que iba a encontrar que probablemente salió en ese orden (aunque no estoy seguro de que los estándares SQL lo requieran).
Ahora es posible que no quieren de hacer eso, pero a veces La vida no es justa :-)
También tiene otra posibilidad de utilizar las tablas de definición de datos DBMS para construir dinámicamente una consulta. Esto no es portátil, pero la mayoría de los DBMS 'suministran estas tablas (como DB/2's SYSIBM.SYSCOLUMNS
) y puede seleccionar los nombres de las columnas desde allí de manera ordenada. Algo así como:
select column_name from sysibm.syscolumns
where owner = 'pax' and table_name = 'movies'
order by column_name;
A continuación, utiliza los resultados de que consulta para la construcción de la consulta real:
query1 = "select column_name from sysibm.syscolumns" +
" where owner = 'pax' and table_name = 'movies'" +
" order by column_name"
rs = exec(query1)
query2 = "select"
sep = " "
foreach colm in rs:
query2 += sep + colm["column_name"]
sep = ", "
query2 += " from movies order by rating"
rs = exec(query2)
// Now you have the rs recordset with sorted columns.
Sin embargo, realmente debería examinar críticamente todas las consultas que seleccionan *
- en la gran mayoría de casos, es innecesario e ineficiente. Y la presentación de los datos es algo que probablemente debería hacerse en la capa de presentación, no en el DBMS en sí mismo: debería dejarse que el DBMS devuelva los datos de la manera más eficiente posible.
hmm, supongo que tengo que recurrir al buen método antiguo de hacer la ordenación de cadenas por mi cuenta :) –
Estoy de acuerdo con esto, NUNCA use * en el código de producción. Nunca se sabe cuando alguien más tarde agrega una columna que NO debe aparecer en la lista, por ejemplo, para la seguridad. Cree siempre la consulta para obtener solo las columnas que necesita. Y si quieres hacerlo dinámicamente, hazlo, pero asegúrate de tenerlo en cuenta para que lo vean otros desarrolladores. –
Una más, si usa vistas SQL * tiene más efectos secundarios si las tablas subyacentes se cambian (columna nueva o eliminada) la vista no se actualiza, por lo que podría no mostrar columnas nuevas O las columnas existentes podrían reemplazarse a medida que la vista selecciona columna por el índice que tenían en vista de creación. –