有没有可能在mysql中使用mariadb提供的hau序列插件(https://mariadb.com/kb/en/library/sequence-storage-engine/)? 或者mysql也有类似的插件吗?我想在两个数字之间列出一个序列,但只列出一行,没有过程、函数或表格。目前,我对序列使用此查询或解决方法,这是我在此处发现的一个变体:
select (h*100+t*10+u+1) x from
(select 0 h 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) A,
(select 0 t 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) B,
(select 0 u 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) C
where (h*100+t*10+u+1) between 1 and 366
order by x;
我在debian9上使用mysql社区服务器5.7.23。我已经尝试过将这个插件文件从mariadb复制到mysql服务器并安装它,但是没有成功。我猜它与mysql不兼容,因为它是mariadb的插件。以下是我尝试过的命令:
mysql> install plugin sequence soname 'ha_sequence.so';
ERROR 1126 (HY000): Can't open shared library '/usr/lib/mysql/plugin/ha_sequence.so' (errno: 2 /usr/lib/mysql/plugin/ha_sequence.so: undefined symbol: _ZN7handler11print_errorEim)
编辑(2018-09-17):
在我接受答案之前,我还试着编译mysql的插件源代码。我是半成功的,因为我已经设法编译了一些修改。但是,该插件需要一些来自mysql中的类的特性(函数),这些特性(函数)在mysql源代码中不存在。所以它不起作用。添加这些特性或者直接在插件中实现一个变通方法,或者根据我的需要修改mysql源代码,都会花费我很多时间。我真的不想深入研究mysql和/或mariadb的源代码。所以我放弃了,现在我处理上面描述的查询。
2条答案
按热度按时间sz81bmfz1#
一次性地,用数字(和
PRIMARY KEY
).从今往后,
JOIN
到那张表上得到数字(并用BETWEEN
或者别的什么)。l7mqbcuq2#
不,mariadb插件只适用于mariadb。