如何在没有RECURSIVE的情况下有效地选择具有父匹配条件的所有行?

时间:2014-08-24 19:34:09

标签: sqlite

在没有RECURSIVE的SQLite上,从具有列ID,IDofParent和Flavor的表中,如何使用max。效率可以归还父母或祖父母的味道='柠檬'?

1 个答案:

答案 0 :(得分:0)

这可以通过查找带有子查询的(大)父母,并将所有内容组合成compound query来完成:

-- SELECT * FROM ATable WHERE Flavour = 'Lemon'
-- UNION ALL
SELECT * FROM ATable WHERE IDofParent IN (
    SELECT ID FROM ATable WHERE Flavour = 'Lemon')
UNION ALL
SELECT * FROM ATable WHERE IDofParent IN (
    SELECT ID FROM ATable WHERE IDofParent IN (
        SELECT ID FROM ATable WHERE Flavour = 'Lemon'))

(除非您为每个步骤单独执行查询,并且将最后一步中的ID插入到下一步中,否则无法避免重复查询。)