我正在使用MySQL 5.7,由于某些原因,即使语法看起来正确,我的INSERT
语句也不像以前那样工作。它在where
声明......
SQL :
insert into users(age) values('16') where username='r';
答案 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语句。