您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL:检查插入是否成功(在一项任务中,从具有两列的表中获得8个不同的随机行)

SQL:检查插入是否成功(在一项任务中,从具有两列的表中获得8个不同的随机行)

感谢@tere拧ko。在CONTINUE HANDLER FOR sqlSTATE '23000'抓获“不是唯一的”错误和正确的+1 CNT回来。

DELIMITER $$
DROP PROCEDURE IF EXISTS get_rands$$
CREATE PROCEDURE get_rands(IN cnt INT)
BEGIN
  DECLARE CONTINUE HANDLER FOR sqlSTATE '23000' SET cnt = cnt + 1;
  DROP TEMPORARY TABLE IF EXISTS rands;
  CREATE TEMPORARY TABLE rands ( topicid INT UNIQUE,topic VARCHAR(128) );
loop_me: LOOP
    IF cnt < 1 THEN
      LEAVE loop_me;
    END IF; 
    INSERT INTO rands 
       SELECT topictable.topicid,topictable.topic
         FROM topictable 
         JOIN (SELECT (RAND()*(SELECT MAX(topictable.topicid) FROM topictable)) AS id) AS choices
        WHERE topictable.topicid >= choices.id
        LIMIT 1;
    SET cnt = cnt - 1;
  END LOOP loop_me;  
END$$
DELIMITER ;
SQLServer 2022/1/1 18:47:05 有482人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶