MySQL插入查询失败

时间:2016-03-07 13:59:24

标签: mysql insert not-exists backand

如果电子邮件尚未使用,我使用backand.com进行尝试在用户表格中创建记录的查询:

INSERT INTO users (email, firstName, lastName, password)
SELECT * FROM (SELECT '{{email}}', 'test', 'person', '{{password}}') AS tmp
WHERE NOT EXISTS (
    SELECT email FROM users WHERE email = '{{email}}'
) LIMIT 1;

它验证了,但当我用params运行它时:

email: dave@gmail.com
password: test

我收到错误:

发生错误,请重试或联系管理员。错误详细信息:重复列名称' test'

为什么会失败?我不明白。

感谢。

1 个答案:

答案 0 :(得分:3)

问题是您使用'test'作为密码,因为您已将'test'作为firstName。由于您没有提供列别名,因此常量值的字段名称会自动生成常量。解决方案:为子选择中的所有4个字段提供显式别名:

SELECT '{{email}}' as email, 'test' as firstName, 'person' as lastName, '{{password}}' as pwd