CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
我在互联网上的某个地方读到了这个声明,但我无法理解WHERE 1=2
。
有人请问,解释一下吗?
答案 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(带数据的结构)