2010-02-28 158 views
7

这不起作用:如何在MySQL插入语句中添加where子句?

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

任何想法如何通过ID缩小插入到特定行?

+2

Downvoted。就目前而言,标题是错误的,或者被接受的答案。无论如何,谷歌带我到这里*插入*,但接受的答案是关于*更新*。 – 2017-05-30 11:45:03

回答

18

在INSERT语句中,你不会有现有的行做了哪里对吗?你插入一个新的行,你的意思是做一个更新的声明?

update users set username='JACK' and password='123' WHERE id='1'; 
+1

“你不会有现有的行做一个地方?”完美的答案。 – 2013-08-16 20:10:49

+1

我想在表格的其余部分做一个where子句。 E.g'insert ... where count(..)<10'。 – 2017-05-30 11:43:15

1

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

UPDATE `users` 
SET `username` = 'Jack', `password` = '123' 
WHERE `id` = 1 
2

试试这个:

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

或者如果你实际上是试图插入:

Insert Into users (id, username, password) VALUES ('1', 'Jack','123'); 
0
INSERT INTO users (id,username, password) 
VALUES ('1','Jack','123') 
ON DUPLICATE KEY UPDATE username='Jack',password='123' 

如果id域是唯一/包这只会工作(而不是复合PK虽然) 另外,如果没有价值1 id被发现,这将插入和更新,否则与id 1纪录如果它确实存在。

3

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

INSERT INTO table_name (column1,column2,column3) 
SELECT column1, column2, column3 FROM table_name 
WHERE column1 = 'some_value' 
+0

呃,你能否加入一些关于这里发生的事情的信息?为什么插入需要一个WHERE? – Martin 2015-09-22 17:53:27

+1

谁在乎*为什么*?问题是*“如何在MySQL插入语句中添加where子句?”* – 2017-05-30 11:46:40

8

通常在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) 
+1

这应该是公认的答案。 +1 – 2017-05-30 11:45:29

0
UPDATE users SET username='&username', password='&password' where id='&id' 

该查询会要求你输入用户名,密码和动态ID

+0

此查询将要求您动态输入用户名,密码和ID – 2015-09-22 17:43:41

0

对于空行,我们如何插入值在哪里子句

试试这个

UPDATE table_name SET username="",password="" WHERE id =""