2016-03-04 95 views
1

我正在使用MySQL 5.7,由于某些原因,我的INSERT语句不像以前那样工作,即使语法看起来正确。这是错误-ING在where声明出来......SQL尝试向列中的一行插入一个值时出错

SQL

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

回答

3

INSERT声明不得包含WHERE条款。去掉它。

如果实际上您正在尝试更新现有的行,请使用UPDATE语句,而不是INSERT语句。

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

该语法不正确。你不能像这样使用where。也许你想是这样的:

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

另外,如果该用户已经存在,你可能会寻找一个update语句来代替:

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

我从会话拉用户名,然后为该用户我需要插入值到特定列,会'更新'的工作? – DRE

+0

@DRE - 你想在你的表中插入一条新记录吗?或者你想要更新表中的现有记录吗?这取决于你的情况。 – sgeddes

5

如果行的用户名r已经存在,也许你正在寻找更新age的值,而不是?

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

而且,我只是猜测这里,但也许age持有一个数值,如果是这样,你可以删除周围16

+0

是的!谢谢! – DRE

2

如果你想在你的表中插入新记录的报价,你必须编写查询插入数据。

SQL INSERT INTO Statement语法是这样的:

INSERT INTO TABLE_NAME(列1,列2,栏3,...) VALUES(值1,值2,值3,...);

在你的情况,如果你没有记录在数据库中,您的查询将是这样的:

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

但是,如果你想更新现有在表中的记录,你必须使用SQL UPDATE Statement写更新数据的查询。

其语法是:

UPDATE table_name的 SET列1 =值1,列2 =值2,... WHERE some_column = some_value;

更新记录/秒,你有WHERE该记录应修改为指定条款。

要修改用户/ S的年龄的用户名是平等的“R”,这是查询:

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

,但如果你想修改该使用者名称的所有用户用“R”开头:

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

我希望这个解释将帮助您更好地了解SQL语句INSERTUPDATE现有记录。

相关问题