12

这不起作用:

INSERT INTO users (username, password) VALUES ("Jack","123") WHERE id='1';

任何想法如何通过 id 缩小对特定行的插入范围?

4

8 回答 8

29

在插入语句中,您不会有一个现有的行来执行 where 子句吗?您正在插入一个新行,您的意思是要执行更新语句吗?

update users set username='JACK' and password='123' WHERE id='1';
于 2010-02-28T03:44:10.873 回答
14

通常在 MySQL 脚本中使用的条件插入将是:

insert into t1(col1,col2,col3,...)
select val1,val2,val3,...
  from dual
 where [conditional predicate];

您需要使用虚拟表对偶。

在这个例子中,只有第二个插入语句会实际插入数据到表中:

create table t1(col1 int);
insert into t1(col1) select 1 from dual where 1=0;
insert into t1(col1) select 2 from dual where 1=1;
select * from t1;
+------+
| col1 |
+------+
|    2 |
+------+
1 row in set (0.00 sec)
于 2015-09-18T15:49:38.040 回答
6

简单地在 INSERT 语句中添加 WHERE 子句;

INSERT INTO table_name (column1,column2,column3)
SELECT column1, column2, column3 FROM  table_name
WHERE column1 = 'some_value'
于 2015-09-07T20:18:13.437 回答
2

试试这个:

Update users
Set username = 'Jack', password='123'
Where ID = '1'

或者,如果您实际上是在尝试插入:

Insert Into users (id, username, password) VALUES ('1', 'Jack','123');
于 2010-02-28T03:44:06.787 回答
1

我认为您正在寻找UPDATE而不是插入?

UPDATE `users`
SET `username` = 'Jack', `password` = '123'
WHERE `id` = 1
于 2010-02-28T03:42:31.477 回答
1
INSERT INTO users (id,username, password) 
VALUES ('1','Jack','123')
ON DUPLICATE KEY UPDATE username='Jack',password='123'

这仅在id字段是唯一/pk 时才有效(虽然不是复合 PK)此外,如果没有id找到值 1,这将插入,否则id如果记录确实存在,则使用 1 更新记录。

于 2010-02-28T04:00:29.920 回答
0
UPDATE users SET username='&username', password='&password' where id='&id'

此查询将要求您动态输入用户名、密码和 ID

于 2015-09-22T17:42:03.120 回答
0

对于空行,我们如何在 where 子句中插入值

试试这个

UPDATE table_name SET username="",password="" WHERE id =""
于 2016-07-28T12:09:13.033 回答