尝试将一个值插入列的一行时出现SQL错误

时间:2016-03-04 23:59:29

标签: mysql sql

我正在使用MySQL 5.7,由于某些原因,即使语法看起来正确,我的INSERT语句也不像以前那样工作。它在where声明......

上出错了

SQL

insert into users(age) values('16') where username='r';

4 个答案:

答案 0 :(得分:5)

如果用户名r的行已经存在,或许您希望更新age值?

使用:update users set age = 16 where username = 'r'代替。

另外,我只是在这里猜测,但也许age包含一个数值,如果是这样,你可以删除16左右的引号。

答案 1 :(得分:4)

该语法不正确。你不能那样使用where。也许你想要这样的东西:

insert into users (username, age)
values ('r', '16')

或者,如果该用户已存在,您可能正在寻找update语句:

update users set age = '16' where username = 'r'

答案 2 :(得分:3)

INSERT语句不得包含WHERE子句。删除它。

实际上,如果您要更新现有行,请使用UPDATE语句,而不是INSERT语句。

update users set age = '16' where username='r';

答案 3 :(得分:2)

如果要在表中插入新记录,则必须编写查询以插入数据。

SQL INSERT INTO Statement 语法是:

INSERT INTO table_name(column1,column2,column3,...) VALUES(value1,value2,value3,...);

在您的情况下,如果您的数据库中没有该记录,您的查询将如下所示:

INSERT INTO users (username, age)
VALUES ('r', '16')

但是,如果您要更新表格中的现有记录,则必须使用 SQL UPDATE Statement 编写查询以更新数据。

这个的语法是:

UPDATE table_name SET column1 = value1,column2 = value2,... some_column = some_value;

要更新记录,您必须在 WHERE 中指定应修改哪条记录的条款。

要使用等于' r'的用户名修改用户的年龄,这是查询:

UPDATE users SET age = 16 WHERE username =  'r'

但是如果你想修改所有用户名以' r'开头的用户:

UPDATE users SET age = 16 WHERE username =  'r%'

我希望这个解释可以帮助您理解 INSERT new和 UPDATE 现有记录的更好的SQL语句。