mysql - 为什么mysql结果不一样
问题描述
我想通过代码选择一棵树,但是当我更改数据ID时,结果会有所不同。</p>
执行以下sql:
DROP TABLE IF EXISTS `tree`;
CREATE TABLE `tree` (
`id` bigint(11) NOT NULL,
`p_code` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of tree
-- ----------------------------
INSERT INTO `tree` VALUES (1, '0', '中国', '1');
INSERT INTO `tree` VALUES (2, '1', '四川省', '2');
INSERT INTO `tree` VALUES (3, '2', '成都市', '3');
INSERT INTO `tree` VALUES (4, '3', '武侯区', '4');
INSERT INTO `tree` VALUES (5, '4', '红牌楼', '5');
INSERT INTO `tree` VALUES (6, '1', '广东省', '6');
INSERT INTO `tree` VALUES (7, '1', '浙江省', '7');
INSERT INTO `tree` VALUES (8, '6', '广州市', '8');
通过流动的 sql 选择:
SELECT v1.code,v1.id, v1.p_code, v1.name,@pv
FROM tree v1,
(SELECT @pv :='1') v2
WHERE (v1.code = @pv) or ( FIND_IN_SET(v1.p_code, @pv) and @pv := concat(@pv, ',', v1.code) )
现在,当我更改父 id(1 -> 10)(id 值大于子 id 值)时,执行 sql 选择。结果改变:
为什么?太混乱了
解决方案
推荐阅读
- asp.net-core - 添加对程序集 .net 核心的引用
- wordpress - 在 woocommerce 中搜索和过滤产品
- apache-beam - Java ParquetIO 可以写空的 parquet 文件吗?如何?
- ios - popToRootViewController 未按预期工作
- javascript - 溢出:滚动;属性没有提供足够的滚动深度
- javascript - 在 html/css/javascript 中使用 for 循环创建 element_id-value
- r - 过滤包含向量的数据框列
- python - 如何将播放器数据存储在 discord.py 中?
- node.js - CSS 文件永远挂起
- popup - 信息窗口或弹出到我在地图框中的标记