MariaDB 10.5 与 MySQL Server 8.0 的区别

MariaDB 10.5 与 MySQL Server 8.0 的区别子查询中应用不同一 查询结果集的列 在子查询的查询结果集表不同这个是我用到的表 CREATETABLE c num day day num int 11 NOTNULL PRIMARYKEY day num USINGBTREE INSERTINTO asd380 c num day day num VALUES 1 INSERTINTO asd380 c num day day num VALUES 2 INS

子查询中应用不同

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

这个是我用到的表。

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 远不止这么简单。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233269.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号