是否可以从 MySQL 嵌套集中检索多个路径?重点是 where 条件的第二行。
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;
是否可以从 MySQL 嵌套集中检索多个路径?重点是 where 条件的第二行。
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;
是的当然。
在SQL
,OR
的优先级低于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
并使用空间索引来加快查询速度。
有关详细信息,请参阅我的博客中的此条目: