V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wleexi
V2EX  ›  程序员

下面的 SQL 求分析

  •  
  •   wleexi · 2020-05-11 22:54:55 +08:00 · 1813 次点击
    这是一个创建于 1659 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看到这样一段 sql,大概能看懂,想具体的学下,不知道该如何在搜索引擎搜素,来求点思路

    insert into table_name(id,md5_1,sn,`gmt_create`,`gmt_modified`) 
    select id,md5_1,sn ,`gmt_create`,now() from
    (select 'id','md5_1','sn','gmt_create',now() union all
    select 1111,null,null,null,null union all
    select 111,'md5_1','sn3', null, null) as a;
    
    
    6 条回复    2020-05-12 12:15:15 +08:00
    wangsongyan
        1
    wangsongyan  
       2020-05-12 00:44:46 +08:00 via iPhone
    insert into select
    yeqizhang
        2
    yeqizhang  
       2020-05-12 00:50:29 +08:00 via Android
    insert into select from,第一次见到这么用是用来拷贝一个表数据到另一个表……
    levelworm
        3
    levelworm  
       2020-05-12 01:08:40 +08:00 via Android
    insert into select from, 我之前常用于建立临时表。。。
    xuanbg
        4
    xuanbg  
       2020-05-12 01:12:12 +08:00
    用 select 的结果集替代 values 的内容,一般用于倒腾数据、生成临时表记录和使用模板数据来生成记录。
    aitiancai
        5
    aitiancai  
       2020-05-12 11:27:12 +08:00
    会锁表吧,头两天从新闻上看的。
    CRVV
        6
    CRVV  
       2020-05-12 12:15:15 +08:00
    https://www.postgresql.org/docs/12/sql-insert.html

    把不必要的部分去掉,insert 的语法是
    INSERT INTO table_name { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }

    最常见的是 INSERT INTO table_name VALUES (1,2,3);
    这个等价于 INSERT INTO table_name SELECT 1,2,3;
    当然这个 SELECT 可以是任意的查询

    其实 SQL 里 VALUES 就是一个直接给出结果的查询,比如子查询也可以写 VALUES
    SELECT * FROM (VALUES (1, 2, 3)) as foo;
    SELECT * FROM (SELECT 1, 2, 3) as foo;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 01:32 · PVG 09:32 · LAX 17:32 · JFK 20:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.