2

MySQL のネストされたセットから複数のパスを取得することは可能ですか? 強調は where 条件の 2 行目にあります。

SELECT parent.name
FROM nested_category AS node,
    nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
    AND node.name = 'Name1' OR node.name = 'Name2'
ORDER BY node.lft;
4

1 に答える 1

2

はい、もちろん。

ではSQLORは よりも優先順位が低いANDため、クエリを次のように書き直す必要があります。

SELECT  parent.name
FROM    nested_category AS node
JOIN    nested_category AS parent
ON      node.lft BETWEEN parent.lft AND parent.rgt
WHERE   node.name IN ('Name1', 'Name2')
ORDER BY
        node.lft;

MySQL結合条件が sargable でないため、このクエリは非常に非効率的です。

セットを として保存し、LineString空間インデックスを使用してクエリを高速化することができます。

詳細については、私のブログのこのエントリを参照してください。

于 2012-05-23T19:20:54.270 に答える