如果你有一个表层次结构,表中的每个项目都包含对父表中父项id的引用,有没有办法从单个(少数)sql查询中获取树作为树?
看起来像:
SELECT *
FROM specy
JOIN genus ON genus.id=specy.genus
JOIN family ON genus.family=family.id
但即使这在语法上是正确的,它是否会为该族的每个属返回一个带有族字段的数据集,并且该属的每个种类都有一个家族和一个属字段?
SQL可以直接(轻松)返回一个分层树,还是只返回一个我必须用另一种语言处理的数据集?
答案 0 :(得分:1)
是的,SQL可以使用common table expressions (CTEs)返回分层数据,但并非所有数据库都支持CTE。语法是:
WITH [RECURSIVE] with_query [, ...]
SELECT...
示例:
WITH RECURSIVE table1 (n, fact) AS
(SELECT col1+1, col1*col2 FROM table1)
SELECT * FROM table1;
答案 1 :(得分:0)
如果您不想查看冗余信息,可以按系列和类别订购结果,然后使用用户变量用空格替换上一行的重复项。然后,您只会在更改时看到家族和属名称。
ERROR: (gcloud.compute.instances.update) unrecognized arguments: --deletion-protection