我正在使用mysql 5.5。我想基于列值将唯一的ID分配给组。
假设我有一张桌子mytable
:
version_col value_col
vrsn1 100
vrsn2 500
vrsn2 300
vrsn1 400
vrsn3 100
我想基于version_col
列并为该列的降序分配ID。表示version_col
中的最新vrsn值将获得0作为id。
像这样:
version_col value_col id
vrsn1 100 2
vrsn2 500 1
vrsn2 300 1
vrsn1 400 2
vrsn3 100 0
我想在插入新记录时更新整个id列。
我是Python程序员,我知道可以使用DataFrame.groupby.ngroup()
函数使用Pandas软件包来完成此操作。但是我想使用SQL查询更新该列。
在此方面的任何帮助将不胜感激。
答案 0 :(得分:0)
您可以尝试一下。下面的方法将对您的// nested objects are made flat to one level
var flattenObject = Object.assign(
{},
...function _flatten(o) {
return [].concat(...Object.keys(o)
.map(k =>
typeof o[k] === 'object' ?
_flatten(o[k]) :
({[k]: o[k]})
)
);
}(obj)
)
// now join the values
var joinedValues = Object.values(flattenObject).join(';');
console.log(joinedValues);
进行排序并分配一个row / group_id。
version_col
答案 1 :(得分:0)
您可以在MySQL 8+中使用dense_rank()
函数:
select t.*, dense_rank() over (order by version_col desc) - 1 as seqnum
from t;
但是,如果您只想获取表中的最新版本,则没有必要。您可以使用:
select t.*
from t
order by t.version_col desc
limit 1;