SQL 相同的递归查询 table
SQL Recursive query over same table
我是 SQL 的新手,我正在尝试对同一个 table 进行递归查询以查找“主经纪人”的经纪人
我有一个看起来像这样的 table(它可以增长到任意数量的行和深度)
所以我需要这样的结果:
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
但我无法理解如何执行递归部分以仅获得我需要的结果,因为我得到的是:
有什么想法吗?
如果原始 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
我是 SQL 的新手,我正在尝试对同一个 table 进行递归查询以查找“主经纪人”的经纪人 我有一个看起来像这样的 table(它可以增长到任意数量的行和深度)
所以我需要这样的结果:
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
但我无法理解如何执行递归部分以仅获得我需要的结果,因为我得到的是:
有什么想法吗?
如果原始 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