2010-03-18 5 views
17

Je suis en train de lire un livre sur SQL.Que signifie cette requête?

Dans ce livre, j'ai vu étrange requête ci-dessous:

SELECT * into mycustomer from customer WHERE 1=2 

Dans cette requête, ce qui est "1 = 2"?

+0

Comme tout le monde l'a dit ci-dessous, la condition est toujours fausse. J'ai vu cette technique utilisée avec SQL dynamique comme un moyen d'obtenir un descripteur pour les colonnes dans la requête - mais vous n'avez pas alors une clause INTO. –

+7

Jonathan: La clause INTO est utilisée pour créer une nouvelle table 'mycustomer' en interrogeant' customer'. Dans ce cas, aucune ligne ne sera retournée, donc une table vide sera créée. C'est un idiome pour copier une structure de table. – Gabe

Répondre

25

Habituellement utilisé pour copier la structure d'une table dans une autre, comme dans votre cas.

SELECT * INTO mycustomer FROM customer WHERE 1=2 

Ce code crée une structure identique de la table Customer dans votre nouvelle table MyCustomer. note que dans SQL Server, les contraintes ne sont pas copiées; donc probablement vous auriez besoin de recréer les contraintes.

+1

Vous êtes la seule personne qui a eu raison jusqu'à présent. Bon travail! – Gabe

+0

Je l'ai eu! Merci, KMan !! – zihado

3

1=2 sera toujours false.

Ceci est un moyen de spécifier une clause WHERE qui sera toujours évaluée à false. Une chose similaire est WHERE 1=1 qui est toujours true.

+0

+1 pour ajouter la 'chose similaire' 1 = 1. –

0
WHERE 1=2 

Est impossible de sorte que cette condition soit toujours fausse. Est-ce une faute de frappe? Peut-être que c'est pour effacer une charge de variables? Comme SELECT INTO mettra toutes les colonnes dans @COLUMNNAME vars

0

Son rien, mais comme un injecttion SQL dans votre cas, il sera toujours faux si 1 = 1 que son vrai et retournera tous les clients des données

1

Retour à l'époque où j'utilisais ASP classique, j'utilisé la structure "WHERE 1 = 2" pour récupérer les définitions de colonne de la table et non son contenu. De nos jours, il existe de meilleurs moyens de récupérer des définitions de colonnes en utilisant un cadre de mappage de relation d'objet. Je pense que le livre que vous lisez est légèrement dépassé, ou le contexte de cette requête est égaré.