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.

1つの賞賛でそれを実装できますか?

4

3 に答える 3

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

'replace into' が役立つかもしれません: 挿入 (またはレコードが既に存在する場合は更新) します。

于 2013-07-19T07:36:57.410 に答える