sql - remove - ¿Qué significa esta consulta?
sql count group by (5)
En los viejos tiempos cuando estaba usando ASP clásico, usé la estructura "WHERE 1 = 2" para recuperar las definiciones de columna de la tabla y no su contenido. Hoy en día, existen mejores formas de recuperar definiciones de columnas mediante el uso de un marco de mapeo de relación de objetos.
Supongo que el libro que está leyendo está un poco desactualizado o que el contexto de esta consulta está fuera de lugar.
Estoy leyendo un libro sobre SQL.
En ese libro, vi la consulta extraña a continuación:
SELECT * into mycustomer from customer WHERE 1=2
En esta consulta, ¿qué es "DONDE 1 = 2"?
No es nada, pero como una inyección SQL en su caso, siempre será falso si 1 = 1 es verdadero y devolverá todos los datos de los Clientes
Usualmente se usa para copiar la estructura de una tabla en otra, como en su caso.
SELECT * INTO mycustomer FROM customer WHERE 1=2
Este código crea una estructura idéntica de la tabla Customer
en su nueva tabla MyCustomer
. Tenga en cuenta que en SQL Server, las restricciones no se copian; así que probablemente necesitarías recrear las restricciones.
1=2
siempre será false
.
Esta es una forma de especificar una cláusula WHERE
que siempre se evaluará como false
.
Una cosa similar es WHERE 1=1
que siempre se evalúa como true
.
WHERE 1=2
Es imposible que esa condición siempre sea falsa. ¿Es un error tipográfico? Tal vez sea para borrar una carga de variables? Como SELECT INTO pondrá todas las columnas en las vars de @COLUMNNAME