如果不存在MySql Insert

时间:2013-07-19 07:33:15

标签: c# mysql .net

我想在我的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.

我可以在一个推荐中实现吗?

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

也许'替换成'可以帮助你:它插入(或者如果记录已经存在则更新)。

答案 2 :(得分: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