子查询中应用不同
一:查询结果集的列,在子查询的查询结果集表不同
这个是我用到的表。
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