2010-03-18 16 views
17

Estoy leyendo un libro sobre SQL.¿Qué significa esta consulta?

En ese libro, vi extraña consulta a continuación:

SELECT * into mycustomer from customer WHERE 1=2 

En esta consulta, lo que es "donde 1 = 2"?

+0

Como todo el mundo dice a continuación, la condición siempre es falsa. He visto esa técnica utilizada con SQL dinámico como una forma de obtener un descriptor para las columnas en la consulta, pero no tiene una cláusula INTO. –

+7

Jonathan: la cláusula INTO se usa para crear una nueva tabla 'mycustomer' al consultar' customer'. En este caso, no se devolverán las filas, por lo que se creará una tabla vacía. Esta es una expresión idiomática para copiar una estructura de tabla. – Gabe

Respuesta

25

Normalmente se utiliza 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. Nota que en SQL Server, las restricciones no se copian; entonces probablemente necesitarías recrear las restricciones.

+1

Usted es la única persona que lo hizo bien hasta ahora. ¡Buen trabajo! – Gabe

+0

¡Lo tengo! Gracias, KMan !! – zihado

3

1=2 siempre será false.

Esta es una forma de especificar una cláusula WHERE que siempre evaluará a false.

Una cosa similar es WHERE 1=1 que siempre evalúa a true.

+0

+1 para agregar 'cosas similares' 1 = 1. –

0
WHERE 1=2 

Es imposible, por lo que la condición siempre será falsa. ¿Es un error tipográfico? Tal vez es para borrar una carga de variables? Como SELECT INTO colocará todas las columnas en @COLUMNNAME vars

0

Su nada, pero al igual que un injecttion SQL en su caso, será siempre falso si 1 = 1 que su verdadero y devolverá todos los datos de los clientes

1

En los viejos días cuando yo estaba usando ASP clásico, que se usa la estructura "WHERE 1 = 2" para recuperar las definiciones de columna de la tabla y no su contenido. Hoy en día hay 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á desactualizado o el contexto de esta consulta está fuera de lugar.

Cuestiones relacionadas