嗨我想填充我的年表,从1881年到今年的年开始。在我的年表和身份证年份中,我只有两个领域。我如何用SQL查询来做到这一点。MySQL的一代填充表
像这样
id year
1 1882
2 1883
3 1884
4 1885
..
id 2016
谢谢
嗨我想填充我的年表,从1881年到今年的年开始。在我的年表和身份证年份中,我只有两个领域。我如何用SQL查询来做到这一点。MySQL的一代填充表
像这样
id year
1 1882
2 1883
3 1884
4 1885
..
id 2016
谢谢
杠杆:
CREATE OR REPLACE VIEW generator_16
AS SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL
SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
SELECT 15;
CREATE OR REPLACE VIEW generator_256
AS SELECT ((hi.n << 4) | lo.n) AS n
FROM generator_16 lo, generator_16 hi;
从回答上面:https://stackoverflow.com/a/9751493
现在为您表
create table years
( year int primary key
);
insert years(year) select 1881+n
from generator_256
where n<150;
-- 150 rows
select min(year), max(year), count(*) from years;
-- 1881 2030 150
drop view if exists generator_256;
drop view if exists generator_16;
你现在有一个years
台,年1881年至2030年
可选,
delete from years where year > year(now());
您可以创建一个存储过程来产生。在这种情况下,cal
是您的日历表。这个想法是采取一个开始日期,然后循环日期和插入,直到你完成。
DELIMITER //
CREATE PROCEDURE gen(IN start DATE)
BEGIN
WHILE (SELECT start < NOW()) DO --- Check our date is before today.
INSERT INTO cal(`date`) VALUES (start); -- Insert it
SET start = ADDDATE(start, interval 1 year); -- add a year to it
END WHILE;
END //
DELIMITER ;
然后,你可以把它叫做:
CALL gen(DATE('1898-01-01'));
@Strawberry:对不起,将其删除。我正在努力帮助,而我是新的。 – somnium
请提供有关当前查询或你想什么更多的信息。 –
对不起,我只是想插入年份表与ID,如(1,1881),(2,1882),(3,1883),(4,1884).......(id,2016 )我可以通过年份增量做到这一点,但我知道它可以在SQL查询 – sanu
现在所有你需要的是1列(INT)主键 – Drew