sql - 同一张表的SQL递归查询
问题描述
我是 SQL 新手,我正在尝试对同一个表进行递归查询以查找“主代理”的代理我有一个看起来像这样的表(它可以增长到任意数量的行和深度)
所以我需要这样的结果:
master_id => broker_id
我已经检查了如何做到这一点,我得到了:
WITH admin_has_master_brokers
AS (
SELECT DISTINCT master_broker_id, admin_id
FROM admin_has_master_brokers
UNION ALL
/*I DO NOT KNOW HOW TO DO THIS SECTION*/
SELECT
master_broker_id, admin_id
FROM admin_has_master_brokers
)
SELECT
*
FROM
admin_has_master_brokers
ORDER BY master_broker_id ASC
但我不明白如何做递归部分只得到我需要的结果,因为我得到了这个:
任何的想法?
解决方案
Povided original table是Mytable
查询列出每个master_broker_id的所有后代。
WITH RECURSIVE admin_has_master_brokers
AS (
SELECT DISTINCT master_broker_id master, master_broker_id, admin_id
FROM mytable
UNION ALL
SELECT a.master,
m.master_broker_id, m.admin_id
FROM admin_has_master_brokers a
JOIN mytable m ON m.master_broker_id = a.admin_id
)
SELECT DISTINCT master, admin_id
FROM
admin_has_master_brokers
ORDER BY master, admin_id
推荐阅读
- php - 将值从数组转移到一个没有键的数组中
- c - 如何将给定级别的二叉搜索树转换为链接链?
- android - Proguard:启用混淆时的 JobIntentService IllegalArgumentException
- sql - 从按布尔列排序的数据库行中检索,但也可以作为第二个标准随机
- javascript - 使用javascript过滤二维数组
- c - 如何将一些方程式作为用户输入?
- laravel - 路线中的产品和类别分离(Laravel)
- c++ - 按值将仿函数传递给 std::thread:为什么复制构造函数被调用两次?
- file - Nginx 只加载几个相同的图像。休息是404
- amazon-web-services - 用于在预定时间触发特定事件的自定义规则的 AWS 服务