2010-02-28 99 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 =""