【问题标题】:INSERT value using SELECT in mysql在 mysql 中使用 SELECT 插入值
【发布时间】:2016-07-23 09:29:37
【问题描述】:

我有 2 个表:用户列(id、用户名、密码)和 user_failed 列(user_id、失败、时间)。有什么可能的方法我可以只使用用户名插入表 user_failed 吗?我尝试了这段代码,但失败了:

INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) 
VALUES (SELECT user_id FROM users WHERE username = 'pokemon','',3)

【问题讨论】:

    标签: mysql sql sql-insert


    【解决方案1】:

    由于多种原因,您的 SQL 查询不正确。

    如果我正确解释了您的查询,以下内容应该可以工作。

    INSERT INTO `login_attempts`(`user_id`, `time`, `failed`)
    SELECT id, '', 3 FROM users WHERE username = 'pokemon'
    

    INSERTSELECT 进入表不需要VALUES ( ... )。这是一个如何使用VALUES ( ... ) 的示例:

    INSERT INTO `login_attempts`(`user_id`, `time`, `failed`)
    VALUES (1, '', 3)
    

    另外,您的子查询SELECT user_id FROM users WHERE username = 'pokemon','',3 WHERE 子句无效。特别是'',3 部分,我假设它是您要为timefailed 插入的值。

    【讨论】:

    • 我无法收到此错误 #1054 - '字段列表'中的未知列 'user_id'
    • 啊它的工作,我只是将 user_id 更改为 id,因为在我的用户表中它是 id 而不是 user_id。谢谢
    【解决方案2】:

    这会起作用....您必须在语句之前和之后添加纯括号。

    INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) VALUES ((SELECT user_id FROM users WHERE username = 'pokemon'),'',3)

    【讨论】:

    • 大括号?你的意思是简单的括号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多