[英]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.