我讨厌询问像这样的小愚蠢的错误,但我无法弄清楚我的生活......
此查询:
INSERT INTO user_authentication(init_password_setup) VALUES( substr((md5(random()::TEXT)), 0, 10) ) WHERE (init_password_setup = NULL OR init_password_setup ='')
抛出此错误:
16:27:11 Kernel error: ERROR: syntax error at or near "WHERE"
我尝试将其作为插入选择运行。真诚的感谢任何帮助,非常感谢
答案 0 :(得分:3)
如果要修改现有行,则需要UPDATE
语句而不是INSERT
语句。
更新将修改现有行,Insert将在表中添加新行。
UPDATE user_authentication
SET init_password_setup = substr((md5(random()::TEXT)), 0, 10)
WHERE init_password_setup IS NULL
OR init_password_setup =''
答案 1 :(得分:3)
INSERT语句没有WHERE子句。但是你可以使用INSERT ... SELECT语句:
INSERT INTO user_authentication (user_id, init_password_setup)
SELECT id, substr((md5(random()::TEXT)), 0, 10)
FROM users
WHERE <some condition here>;
或只更新现有记录:
UPDATE user_authentication
SET init_password_setup = substr((md5(random()::TEXT)), 0, 10)
WHERE init_password_setup IS NULL OR init_password_setup ='';
答案 2 :(得分:1)
insert
语句没有where
子句。插入新数据或使用update
子句(可以有where
子句更新现有数据)。
答案 3 :(得分:1)
您不能使用WHERE子句进行INSERT。 如果您尝试INSERT,那么只需使用VALUES。 如果你想在哪里使用UPDATE。