为什么要使用"其中1 = 2"在SQL CREATE TABLE语法?

时间:2017-08-18 04:47:34

标签: sql

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

我在互联网上的某个地方读到了这个声明,但我无法理解WHERE 1=2

有人请问,解释一下吗?

7 个答案:

答案 0 :(得分:103)

这种类型的命令通常用于将一个表的结构复制到另一个表。在这种情况下,EMPL_DEMO将具有与employees 相同的列结构,但键或约束除外

1=2始终评估为False,这会阻止您复制任何行。

答案 1 :(得分:26)

CREATE TABLE(创建新表)

EMPL_DEMO(名为EMPL_DEMO)

AS(使用数据和结构)

SELECT * FROM employees WHERE 1=2;(员工中的一切,其中1 = 2.由于1永远不是2 - 复制结构和所有0个匹配的行)

..基本上是复制结构而不是数据。

答案 2 :(得分:14)

这种语法也是如此,但更明显的是,它创建了一个具有相同结构的表,没有数据。

CREATE TABLE EMPL_DEMO AS SELECT * FROM employees limit 0;

答案 3 :(得分:7)

这对于复制表的结构非常有用,除了其约束,键,索引,标识属性和数据行。

此查询将创建EMPL_DEMO表,不会从employees表中复制任何行,因为WHERE 1=2条件始终将被评估为FALSE

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

答案 4 :(得分:6)

信任谷歌,我的朋友。 From the bottom of the first result when you google that statement

  

例如:

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

这将创建一个名为供应商的新表,其中包括所有   公司表中的列,但没有来自公司的数据   表

答案 5 :(得分:1)

<强>甲骨文:

import * as mongoose from "mongoose";
import * as StudentNotification from './models/student';

export class ModelFactory {
private userRole:string;
constructor(role:string){
    this.userRole = role;
}

Create():mongoose.Model<mongoose.Document>{
    switch(this.userRole){
        case "Student":{
            return StudentNotification;
            break;
        }
        default :{
            return null;
        }
    }
}
}

更好地了解Teradata数据库:

CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2; //just structure not data

CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=1; //ststructure and data

答案 6 :(得分:1)

在SQL Server中

从table2中选择* into table1,其中1 = 2(仅结构)

从table2中选择* into table1,其中1 = 1(带数据的结构)