1

仅当表中不存在此命令时,我才想向我的 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.

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

4

3 回答 3

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;
于 2013-07-19T07:42:00.013 回答
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 
于 2013-07-19T07:48:35.850 回答
0

也许“替换为”可以帮助您:它插入(如果记录已经存在,则更新)。

于 2013-07-19T07:36:57.410 回答