Python 如何使用另一种方法实现mysql左连接?
因为MySQL离开了join limited 61,可能这是表:Python 如何使用另一种方法实现mysql左连接?,python,mysql,Python,Mysql,因为MySQL离开了join limited 61,可能这是表: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for test -- ---------------------------- DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` int(11) DEFAULT NUL
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
`id` int(11) DEFAULT NULL,
`pid` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of test
-- ----------------------------
BEGIN;
INSERT INTO `test` VALUES (1, 3);
INSERT INTO `test` VALUES (1, 4);
INSERT INTO `test` VALUES (2, 4);
INSERT INTO `test` VALUES (3, 5);
INSERT INTO `test` VALUES (3, 6);
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
这是MySQL SQL:
SELECT
t1.pid AS lev1,
t2.pid AS lev2,
t3.pid AS lev3,
t4.pid AS lev4
FROM
test AS t1
LEFT JOIN test AS t2 ON ( t2.id = t1.pid )
LEFT JOIN test AS t3 ON ( t3.id = t2.pid )
LEFT JOIN test AS t4 ON ( t4.id = t3.pid )
LEFT JOIN test AS t5 ON ( t5.id = t4.pid )
WHERE t1.id = 1 ;
我想这样输出,但不使用MYSQL左连接:
lev1,lev2,lev3,lev4
3, 6,
3, 5,
4, ,
如果python能实现,我也需要 61的限制是有原因的,您的查询可能会运行得有点慢,但下面的内容应该可以满足您的需要:
SELECT
t1.id AS lev1, t2.id AS lev2, t3.id AS lev3, t4.id AS lev4
FROM
t1, t2, t3, t4
WHERE
t2.pid = t1.id AND t3.pid = t1.id AND t4.pid = t1.id
这是继承人吗?如果是这样的话,看看MySQL-8.0+/MariaDB-10.2+中的递归CTE,这个限制是有原因的,不是吗?谢谢你的建议谢谢,但这不是我想要的,id和pid之间的关系超过61。你是什么意思?我假设您的意思是要从61个以上的表中选择数据,那么您为什么要达到连接限制呢?我提出的查询应该适用于61个月以上。或者我可能误解了这个问题?只有一个表,我想找到父节点,最后得到所有路径