我想在我的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 :(得分: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