88 votes

Pourquoi utiliser "where 1=2" sur une syntaxe SQL CREATE TABLE ?

CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;

J'ai lu cette déclaration quelque part sur Internet, mais je n'ai pas pu comprendre la WHERE 1=2 .

Quelqu'un peut-il m'expliquer cela ?

113voto

DrZoo Points 1190

Ce type de commande est généralement utilisé pour copier la structure d'une table vers une autre. Dans ce cas, EMPL_DEMO aura la même structure de colonnes que employees , sauf pour les clés ou les contraintes .

Le site 1=2 est toujours évalué à False ce qui vous empêche de copier l'une des lignes.

30voto

Fazer87 Points 437

CREATE TABLE (Créer un nouveau tableau)

EMPL_DEMO (Appelé EMPL_DEMO)

AS (Avec les données et la structure de)

SELECT * FROM employees WHERE 1=2; (Tout dans les employés où 1=2. Puisque 1 n'est jamais 2 - copier la structure et toutes les lignes 0 correspondantes)

Essentiellement copier la structure et non les données.

15voto

fraff Points 385

Cette syntaxe fait la même chose, mais c'est plus évident, elle crée une table avec la même structure, sans données.

CREATE TABLE EMPL_DEMO AS SELECT * FROM employees limit 0;

7voto

mr_eclair Points 9503

Cela peut être utile pour copier la structure d'une table. à l'exclusion de ses contraintes, ses clés, ses index, sa propriété d'identité et ses lignes de données.

Cette requête va créer EMPL_DEMO avec aucune ligne copiée de la table des employés en tant que WHERE 1=2 sera toujours évaluée comme FALSE .

  CREATE TABLE EMPL_DEMO 
  AS 
  SELECT * 
  FROM employees 
  WHERE 1=2;

5voto

Silas B Points 169

Faites confiance à Google, mon ami. En bas du premier résultat lorsque vous recherchez cette déclaration sur Google. :

Par exemple :

CREATE TABLE suppliers
  AS (SELECT *
    FROM companies WHERE 1=2);

Cela créerait une nouvelle table appelée fournisseurs qui comprendrait toutes les colonnes de la table des entreprises, mais aucune donnée de la table des entreprises mais aucune donnée de cette dernière.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X