MariaDB 10.5 与 MySQL Server 8.0 的区别

子查询中应用不同

一:查询结果集的列,在子查询的查询结果集表不同

这个是我用到的表。

CREATE TABLE `c_num_day` (
  `day_num` int(11) NOT NULL,
  PRIMARY KEY (`day_num`) USING BTREE
);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (1);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (2);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (3);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (4);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (5);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (6);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (7);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (8);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (9);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (11);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (12);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (13);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (14);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (15);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (16);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (17);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (18);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (19);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (20);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (21);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (22);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (23);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (24);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (25);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (26);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (27);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (28);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (29);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (30);
INSERT INTO `asd380`.`c_num_day`(`day_num`) VALUES (31);

俩个数据库分别执行下面sql

select d1.day_num,
(select count(1) from (select DISTINCT day_num from c_num_day d2 where d2.day_num<d1.day_num) d3) 前面有几天
from c_num_day d1
where day_num < day(now());

MySQL Server 8.0会正常执行
正常执行
MariaDB 10.5执行报错,Unknown column ‘d1.day_num’ in ‘where clause’,意思是“WHERE子句”中的未知列“d1.day_num”
在这里插入图片描述
我还经过了各种测试,也查看了MariaDB 10.5 对表的优化,不做其他测试和资料的表述。可以肯定,查询的结果集的列(d1.day_num),不能在子查询的查询结果集表(d3)中使用。mysql支持。

碰到这个是我在公司开发好了,用的是 MySQL Server 8.0。拿给现场人使用,现场人说报错,然后发现用的是MariaDB 10.5。当然真实碰到的sql 远不止这么简单。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值