2013-07-19 53 views
1

我想將一行添加到我的MySQL表只如果它沒有在表中的Wi存在此命令:MySql的插入,如果不存在

INSERT INTO client.viewcount (clientid, userid) 
SELECT * FROM (SELECT '1111111', '222') AS tmp 
WHERE NOT EXISTS (
    SELECT clientid,userid FROM client.viewcount WHERE clientid = '1111111' AND userid = '222' 
) LIMIT 1; 

這是工作,只有當它不存在於表中插入。 的問題我有另一個表

Users 

id userid viewcount 
1  123456 45 
2  987741 62 
3  741369 20 

,我希望能夠增加用戶的viewcount。 喜歡的東西: 如果我添加

(clientid,userid) => (a432543,123456) 
If it's not exist in the table => Insert and increase the viewcount to 46. 

我可以在一個讚揚實現它?

+0

你想只插入如果SELECT客戶端ID,用戶ID FROM client.viewcount WHERE客戶端ID =「1111111」和用戶ID =「222」不返回行吧?你的SQL非常難以遵循。 –

+0

@Onam我只想在這個clientid和用戶id不存在的情況下添加,並增加用戶表中的viewcount – MTA

回答

3
IF EXISTS(SELECT 1 FROM UserTable WHERE clientid = @clientid AND userid = @userid) 
BEGIN 
    UPDATE ViewcountTable SET viewcount = viewcount+1 
    WHERE clientid = @clientid AND userid = @userid; 
END 
ELSE 
BEGIN 
     INSERT INTO UserTable (clientid, userid); 
     INSERT INTO ViewcountTable (userid, 0); 
END IF; 
0

也許'替換成'可以幫助你:插入(或更新如果記錄已經存在)。

+0

我插入的命令已經插入(如果不存在),但是我想增加另一個表中的viewcount。 – MTA

0

沒有嘗試這樣做可能是幾個錯誤(沒有表試試這件),但應該工作。

DECLARE @viewcount INT; 
SET @viewcount = 0; 

IF NOT EXISTS (SELECT clientid,userid FROM client.viewcount WHERE clientid = @clientid AND userid = @userid) 
BEGIN 
    INSERT INTO client.viewcount (clientid, userid) 
    VALUES (@clientid, @userid) 

    SELECT @viewcount = viewcount FROM [Users] WHERE clientid = @clientid AND userid = @userid 
    SET @viewcount = @viewcount + 1; 
    UPDATE [Users] SET viewcount = @viewcount 
    WHERE clientid = @clientid AND userid = @userid 
END 
+0

本質上,檢查行是否存在,如果它沒有插入它。然後獲取viewcount(通過選擇@viewcount)增加它並更新它。 –

相關問題