繁体   English   中英

mysql根据条件插入

[英]mysql insert based on condition

我需要根据条件在表中插入一些值。 基本上我有2个字段:

从和到

我需要以11为增量插入其范围内的值。

假设以下

从= 79090200到= 79090233

因此将保存以下值:79090200 79090211 79090222 79090233

我还是一个新手,所以任何帮助都将非常重要。

您可以使用UNION生成一定范围的数字,并根据该数字进行插入。 像这样的东西:

INSERT INTO SomeTable (SomeNumeric)
SELECT 79090200 + ((Units.i + Tens.i * 10 + Hundreds.i * 100) * 11) AS SomeNumber
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Units,
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Tens,
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Hundreds
HAVING SomeNumber BETWEEEN 79090200 AND 79090233

您可以使用以下存储过程将这些值存储在表中

DELIMITER $$
USE test$$

DROP PROCEDURE IF EXISTS `sp_increment`$$

CREATE DEFINER = `root`@`localhost` PROCEDURE `test`.`sp_increment`()

    BEGIN


DECLARE start_val INT;
DECLARE end_val INT;

SET start_val=79090200;
SET end_val=79090233;

WHILE start_val <= end_val DO
    INSERT INTO mytable (mycolumn) VALUES(start_val);
    SET start_val = start_val + 11;
END WHILE;


    END$$

DELIMITER ;

您可以使用以下过程从表中获取值-

DELIMITER $$
USE test$$

DROP PROCEDURE IF EXISTS `sp_increment`$$

CREATE DEFINER = `root`@`localhost` PROCEDURE `test`.`sp_increment`()

    BEGIN


 DECLARE s_val INT;
 DECLARE e_val INT;

SELECT st_val, end_val INTO @start_val, @end_val FROM my_val;

 SET s_val=@start_val;
 SET e_val=@end_val;

WHILE s_val <= e_val DO
    INSERT INTO increment_tbl VALUES(s_val);
    SET s_val = s_val + 11;
END WHILE;


    END$$

DELIMITER ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM