如果电子邮件尚未使用,我使用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'
为什么会失败?我不明白。
感谢。
答案 0 :(得分:3)
问题是您使用'test'
作为密码,因为您已将'test'
作为firstName。由于您没有提供列别名,因此常量值的字段名称会自动生成常量。解决方案:为子选择中的所有4个字段提供显式别名:
SELECT '{{email}}' as email, 'test' as firstName, 'person' as lastName, '{{password}}' as pwd