CREATE TABLE EMPL_DEMO AS SELECT * FROM employees WHERE 1=2;
Run Code Online (Sandbox Code Playgroud)
我在互联网上的某处读到了这个声明,但我无法理解WHERE 1=2.
有人请,解释一下吗?
DrZ*_*Zoo 105
这种类型的命令通常用于将一个表的结构复制到另一个表.在这种情况下,EMPL_DEMO将具有相同的柱状结构employees,除了键或约束.
该1=2结果始终为False防止您复制任何行.
Faz*_*r87 26
CREATE TABLE (创建一个新表)
EMPL_DEMO (名为EMPL_DEMO)
AS (有了数据和结构)
SELECT * FROM employees WHERE 1=2; (员工中的一切,其中1 = 2.由于1永远不是2 - 复制结构和所有0匹配行)
..实际上复制结构而不是数据.
fra*_*aff 14
这种语法也是如此,但更明显的是,它创建了一个具有相同结构的表,没有数据.
CREATE TABLE EMPL_DEMO AS SELECT * FROM employees limit 0;
Run Code Online (Sandbox Code Playgroud)
这对于复制表的结构(包括约束,键,索引,标识属性和数据行)非常有用.
此查询将创建EMPL_DEMO没有从employees表复制的行的表,因为WHERE 1=2条件始终将被评估为FALSE.
CREATE TABLE EMPL_DEMO
AS
SELECT *
FROM employees
WHERE 1=2;
Run Code Online (Sandbox Code Playgroud)
小智 6
信任谷歌,我的朋友.从谷歌那个声明的第一个结果的底部:
例如:
Run Code Online (Sandbox Code Playgroud)CREATE TABLE suppliers AS (SELECT * FROM companies WHERE 1=2);这将创建一个名为供应商的新表,其中包含公司表中的所有列,但没有来自公司表的数据.