知道使用数据库的触发器。我试图从一个表中选择10个随机记录,并将它们全部插入到另一个表中,同时保留最后一个插入ID。我目前正在使用:
CREATE TRIGGER `Deal White Cards` AFTER INSERT ON `u`
FOR EACH ROW
INSERT INTO dh (cid, uid) VALUES
(
(SELECT `id` FROM `c` WHERE `colour` = 'w' ORDER BY RAND() LIMIT 10),
NEW.id
)
目前我正在接收错误(子查询返回超过1行)
答案 0 :(得分:1)
您收到此错误,因为子查询的这一部分返回多行:
SELECT `id` FROM `c` WHERE `colour` = 'w' ORDER BY RAND() LIMIT 10
并且您正试图将它放入一行。
解决方法是:
CREATE TRIGGER `Deal White Cards` AFTER INSERT ON `u`
FOR EACH ROW
INSERT INTO dh (cid, uid)
SELECT `id`, NEW.id FROM `c` WHERE `colour` = 'w' ORDER BY RAND() LIMIT 10;
希望,这是你的意思; - )