如何像在 Excel 中一样在 MySQL 中“填充系列”(线性步长值)?
Posted
技术标签:
【中文标题】如何像在 Excel 中一样在 MySQL 中“填充系列”(线性步长值)?【英文标题】:How to "Fill Series" (Linear step value) in MySQL like in Excel? 【发布时间】:2020-08-14 07:23:16 【问题描述】:在 Excel 中,使用线性步长值填充系列很简单。我如何在 mysql 中做到这一点?
(1) SELECT * FROM blog_posts
其中postid
= 5 ORDER BY rowid
ASC
我从一个巨大的表中得到这个查询结果:
rowid postid Unix_TimeStamp
100 5 1000000000
135 5 1656885375
142 5 1885649882
208 5 1928211766
(2)接下来,我需要更改 Unix_TimeStamp 的值。我想单独留下第一行(rowid = 100),然后每一行的 Unix_TimeStamp 比前一行的高 100。结果是:
rowid postid Unix_TimeStamp
100 5 1000000000
135 5 1000000100
142 5 1000000200
208 5 1000000300
非常感谢您的慷慨回复。
【问题讨论】:
请注意,在(2)中,我需要更改 Unix_TimeStamp 的值,谢谢! 所以你想在之前的基础上更新unix_timestampt。请检查此处给出的答案:***.com/questions/35897366/… 这能回答你的问题吗? MySQL update column based on previous row (same column) 【参考方案1】:在 mysql 5.x 中你可以这样做
在 mysql 8 中你有窗口函数rownumber
架构 (MySQL v5.7)
CREATE TABLE blog_posts (
`rowid` INTEGER,
`postid` INTEGER,
`Unix_TimeStamp` INTEGER
);
INSERT INTO blog_posts
(`rowid`, `postid`, `Unix_TimeStamp`)
VALUES
('100', '5', '1000000000'),
('135', '5', '1656885375'),
('142', '5', '1885649882'),
('208', '5', '1928211766');
查询 #1
SELECT
`rowid`, `postid`
,(SELECT MIN(`Unix_TimeStamp`) FROM blog_posts where postid = 5 ) + @rn *100 `Unix_TimeStamp`
,@rn := @rn + 1 ronn
FROM blog_posts, (SELECT @rn := 0) a
where postid = 5
ORDER BY rowid ASC;
| rowid | postid | Unix_TimeStamp | ronn |
| ----- | ------ | -------------- | ---- |
| 100 | 5 | 1000000000 | 1 |
| 135 | 5 | 1000000100 | 2 |
| 142 | 5 | 1000000200 | 3 |
| 208 | 5 | 1000000300 | 4 |
UPDATE blog_posts bp INNER JOIN (SELECT
`rowid`, `postid`
,(SELECT MIN(`Unix_TimeStamp`) FROM blog_posts where postid = 5 ) + @rn *100 `Unix_TimeStamp`
,@rn := @rn + 1 ronn
FROM blog_posts, (SELECT @rn := 0) a
where postid = 5
ORDER BY rowid ASC) t1 ON bp.rowid = t1.rowid
SET bp.Unix_TimeStamp = t1.Unix_TimeStamp;
[View on DB Fiddle](https://www.db-fiddle.com/f/wUqVKNZy96RjR7hTk3md7o/4)
【讨论】:
谢谢。它创建了温度值 ronn 很好的表。但是将 Unix_TimeStamp 与原始查询结果逐行匹配的命令是什么。也就是说,我需要更改原始查询结果的 Unix_TimeStamp 我添加了更新命令。如果你想对所有 postid 都这样做,那么洞的事情就会变得更加复杂。 非常感谢!作为一个非编码员,我不能感谢你!是的,成功了!以上是关于如何像在 Excel 中一样在 MySQL 中“填充系列”(线性步长值)?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以像在 Excel 中一样合并数据透视表列 OBIEE 12c 的单元格和中心?