從您的部分示例中,我認爲您正在嘗試製作一個recursive query,而不是經典的UNION查詢,如果是事實,則這是UNION的一個優點。
您需要在company_res上執行一些選擇,然後添加這些公司的父母。
的基本形式是:
WITH RECURSIVE t(n) AS (
SELECT 1
UNION ALL
SELECT n+1 FROM t
)
SELECT n FROM t LIMIT 100;
在你情況類似的東西可能:
WITH RECURSIVE rectable(
company_id,
field2,
field3,
parent_id) AS (
-- here the starting rows, t1 in your example
SELECT
company_res.company_id,
company_res.field2,
company_res.field3,
company.parent_id
FROM company_res
INNER JOIN company ON company_res.company_id=company.id
WHERE (here any condition on the starting points)
UNION ALL
-- here the recursive part
SELECT
orig.company_id,
orig.field2,
orig.field3,
orig.parent_id
FROM rectable rec,company_res orig
INNER JOIN company ON orig.company_id=company.id
WHERE company.parent_id=rec.company_id
-- here you could add some AND sections if you want
)
SELECT company_id,field2, field3,parent_id
FROM rectable
ORDER BY parent_id;
你到底想幹什麼?從概念上講,您發佈的查詢似乎沒有任何意義。也許發佈一些示例數據和期望的結果。 –