美文网首页
【Mysql】执行 Insert 语句报错:You can't

【Mysql】执行 Insert 语句报错:You can't

作者: Queenie的学习笔记 | 来源:发表于2020-04-16 18:49 被阅读0次

原报错语句:

INSERT INTO table_B (
    userId,userCode,nickName,phone,addTime
)
VALUES
    (
        (SELECT((SELECT `userId` FROM table_B ORDER BY `userId` DESC LIMIT 0,1) + 1)),
        (SELECT REPLACE (uuid(), '-', '')),
        'nicky',
        (SELECT lxfs FROM table_A ORDER BY cjsj DESC LIMIT 0,1),        
        now()
    );

查找网上的资料,据说这个问题只出现于MySQL,MSSQL和Oracle不会出现此问题,
而原因是不能先select出同一表中的某些值,再update这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值
解决办法:将SELECT出的结果再通过中间表SELECT一遍

调整后 sql 语句可以正常执行:

INSERT INTO table_B (
    userId,userCode,nickName,phone,addTime
)
VALUES
    (
        (SELECT USERID FROM (SELECT((SELECT `userId` FROM table_B ORDER BY `userId` DESC LIMIT 0,1) + 1) USERID) U),
        (SELECT REPLACE (uuid(), '-', '')),
        'nicky',
        (SELECT lxfs FROM table_A ORDER BY cjsj DESC LIMIT 0,1),        
        now()
    );

相关文章

网友评论

      本文标题:【Mysql】执行 Insert 语句报错:You can't

      本文链接:https://www.haomeiwen.com/subject/grmdvhtx.html