2012-09-29 73 views
1

可能重複:
「INSERT IGNORE」 vs 「INSERT … ON DUPLICATE KEY UPDATE」如何將兩個sql查詢合併爲一個?

你好人民

$sql1="SELECT * FROM `table` WHERE `user` = '$user'"; 
$res1=mysql_query($sql1); 
if(!$res1||mysql_num_rows($res1)<1){ 
$sql2="INSERT INTO `table` (`user`) VALUES ('$user')"; 
$res2=mysql_query($sql2); 
if(!$res2){echo 'Yes';}else{echo 'No';} 
} 
else{echo 'user already exists!';} 

可以到這兩個查詢合併成一個?

+0

'$ user'從哪裏來? – PeeHaa

+0

將'user'設置爲**'UNIQUE' ** – hjpotter92

+0

這個選項發送給用戶 –

回答

3

如果您的列user設置爲UNIQUE,最多有每個用戶的ONE條目會。爲了ALTER TABLE,使列UNIQUE

​​

然後,像這樣一個查詢將是一件好事:

$res = mysql_query("INSERT IGNORE INTO `table`(`user`) VALUES('".mysql_real_escape_string($user) . "')"; 
echo (mysql_affected_rows() == 0) ? "No" : "Yes"; 

mysql_affected_rows()

+0

如果我有dublicte值我需要自動設置新值$用戶,如果我將使用忽略,行不插入只...如果我有dublicate,我需要自動生成新值$用戶。 –

+0

然後插入表用戶,沒有給任何值的自動增量字段sql會爲你做...或者你發佈你的表結構@john –

+0

問題! 我每次都給'是'。我可以看到'用戶'這個值已經存在'表'中了嗎? –

3

使用此查詢。

INSERT INTO USER SELECT * FROM TABLE WHERE user='$user' 

列在表table和用戶表中的號碼必須是相同的,它們的類型也是。

你也可以使用

INSERT into user 
SELECT * from table 
WHERE user='$user' 
AND 
    NOT EXISTS (SELECT * FROM USER 
       WHERE USER = '$user') 
+0

INSERT INTO TABLE USER?它是什麼? –

+0

我的表是'表' –

+0

對不起,只是我的錯誤。我編輯過。 –