它不是基本的父子层次结构,而是更复杂的。
以下是数据示例:
id parent_id status
-----------------------
10 10 on
11 10 off
12 12 off
13 13 on
我想要的是拥有离线数据(ID 11和12)。我的问题在于,id 11的父级具有“on”状态,这也应该被采用。
期望的结果是:
id parent_id status
-----------------------
10 10 on
11 10 off
12 12 off
我写的是这样的票价:
SELECT t1.id, t1,parent_id
FROM t1
LEFT JOIN t1 t11 ON t11.id = t1.parent_id
WHERE ((t1.status = 'off' AND t11.status='off')
OR (t1.status = 'off' AND t11.status='on'))
ORDER BY t1.parent_id, t1.id
使用此查询,我没有t1和t11状态等于'on'的行(这是必需的)。
这个输出是:
id parent_id status
-----------------------
(10) (10) (on) -- missing row
11 10 off
12 12 off
如何获得所需的结果(表2)?
答案 0 :(得分:1)
你很亲密,但不准确。试试这个:
SELECT t1.id, t1,parent_id
FROM t1
LEFT JOIN t1 t11 ON t1.id = t11.parent_id
WHERE t1.status = 'off' OR t11.status='off'
ORDER BY t1.parent_id, t1.id