V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
pppguest3962
V2EX  ›  问与答

这条 INSERT INTO xx SELECT 的 Mysql 语句,在 VALUE 段,如何取值?

  •  
  •   pppguest3962 · 311 天前 · 593 次点击
    这是一个创建于 311 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题一、
    直接写,是这样的:
    INSERT INTO record_cc (`lname`, `mhid`, `type`, `mtname`, `reson`, `UpdateTime`) VALUES ('stb', '888', 1, 'ABC', '23#30', '2023-06-27 16:10:32');"
    
    
    mtname 字段如果要从其它表取值,应该如何实现呢? 
    (如这个错误的语句,应该怎么修改?)
    INSERT INTO record_cc (`lname`, `mhid`, `type`, `mtname`, `reson`, `UpdateTime`) VALUES ('stbl', '888', '1', 
    (SELECT `AU` FROM chresult WHERE chresult.mhid = '888' LIMIT 1),
    , '23#30', NOW())
    
    
    问题二,是否可以在以上 INSERT 语句的基础上完成这样的拼接?
    (我简化了相关字段,想看看是怎么样完成拼装的...)
    
    INSERT INTO record_cc (`reson`) VALUES (xxx);
    这个 xxx 的值,是
    SELECT `AU` FROM chresult WHERE chresult.mhid = '888' LIMIT 1
    +
    '#'
    +
    SELECT `BU` FROM chresult WHERE chresult.mhid = '888' LIMIT 1
    这样组装起来的,
    想看看大家是怎么样做,可以避免多次查询,然后还要在本地程序运算完再写 mysql ,
    现在开销太大,看看能不能一句就把数据库怼完
    
    9 条回复    2023-06-27 19:14:57 +08:00
    jcc
        1
    jcc  
       311 天前   ❤️ 1
    问题一,如果其他字段是固定的,你可以把它们按顺序拼接到 select 中,像这样
    ```sql
    INSERT INTO record_cc (`lname`, `mhid`, `type`, `mtname`, `reson`, `UpdateTime`)
    SELECT 'stbl', '888', '1', `AU`, '23#30', NOW()
    FROM chresult
    WHERE chresult.mhid = '888'
    ```

    问题二,可以使用 concat() 函数做拼接
    liprais
        2
    liprais  
       311 天前   ❤️ 1
    建议看完文档再来问
    1.就写个字面量的事
    2.直接用 concat 完事
    intersect
        3
    intersect  
       311 天前   ❤️ 1
    INSERT INTO record_cc (`lname`, `mhid`, `type`, `mtname`, `reson`, `UpdateTime`)
    select 'stbl', '888', '1',`AU`, concat(`AU`,'#' ,`BU`), NOW() FROM chresult WHERE chresult.mhid = '888' LIMIT 1
    pppguest3962
        4
    pppguest3962  
    OP
       311 天前
    @liprais 也是奇怪,这个论坛是公开的,就一定是程序员来么,为什么要一个搞通信的人为了喝牛奶去研究一头奶牛的基因序列重组?谢谢。
    liprais
        5
    liprais  
       311 天前
    @pppguest3962 你搞通信的更应该明白看文档的重要性,凭啥写个 sql 就要当伸手党?
    pppguest3962
        6
    pppguest3962  
    OP
       311 天前
    @liprais 您可以不回答的,为什么一定要按照您的标准去指示其他人?
    liprais
        7
    liprais  
       311 天前
    @pppguest3962 “这个论坛是公开的” 原样还给你
    pppguest3962
        8
    pppguest3962  
    OP
       311 天前
    几年都不用一次 MYSQL ,就临时解决一个问题,时态催得急,就谢谢大家了,不想再怼下去
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2252 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:01 · PVG 20:01 · LAX 05:01 · JFK 08:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.