[英]How to update set number of records with mysql?
我有一張這樣的桌子:
ID | user_id| game_id
我需要告訴mysql更新game_id =? 其中user_id =? 和game_id = 0以獲取一定數量的記錄(100、250等)。 有沒有一種簡單的方法可以在mysql中執行此操作,還是必須在PHP中執行此操作?
抱歉,我只是太勞累了,對這個問題想得太多。 @德魯說得對。 只需使用LIMIT子句。
UPDATE uc_tickets SET game_id=? WHERE user_id=? AND game_id=0 LIMIT ?
可以使用任何您想要的語言進行呼叫。 它是一個存儲的過程。 請記住,如果您不使用ORDER BY
,它將成為混亂局面。 畢竟我們是冒險的。
架構:
CREATE TABLE myTable
( id INT AUTO_INCREMENT PRIMARY KEY,
game_id INT NOT NULL,
user_id INT NOT NULL
);
INSERT myTable(game_id,user_id) VALUES (1,1),(1,1),(2,2),(33,1);
存儲過程:
DROP PROCEDURE IF EXISTS uspUpdateChunk;
DELIMITER $$
CREATE PROCEDURE uspUpdateChunk
( p_game_id INT,
p_user_id INT,
p_limit INT
)
BEGIN
SET @sql=CONCAT('UPDATE myTable SET game_id=',p_game_id,' WHERE user_id=',p_user_id,' ');
SET @sql=CONCAT(@sql,'ORDER BY game_id LIMIT ',p_limit);
-- select @sql; -- rem out for debugging purposes
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END;$$
DELIMITER ;
測試:
call uspUpdateChunk(777,1,2);
+----+---------+---------+
| id | game_id | user_id |
+----+---------+---------+
| 1 | 777 | 1 |
| 2 | 777 | 1 |
| 3 | 2 | 2 |
| 4 | 33 | 1 |
+----+---------+---------+
是的,僅更新了兩個user_id
= 1
所以ORDER BY
某物。 id
,隨便。
MySQL手冊頁,標題為“准備好的語句的SQL語法” 。 似乎總是使用CONCAT()
。 至關重要的是, @
@sql
是用戶變量(帶有@
符號),而不是DECLARE
的局部變量。 並不是說手冊似乎告訴任何人。 如果您做的不正確,可能會浪費數小時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.