我不太确定自己是在说这种权利,但请耐心等待。
我想知道是否有可能在SQL(特别是MySQL)中做这样的事情:假设我们有树状数据保存在下表中的数据库中:
mysql> desc data_table; +------------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------------+---------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | parent_id | int(10) unsigned | YES | MUL | NULL | | | value | text | YES | | NULL | |
因此,除“根”行外,每一行都有一个父级,而叶行除外,每一行都有子级。
是否可以仅使用SQL查找任何给定行的所有后代?
可以仅使用SQL而不是在单个查询中获取所有后代。但是我敢肯定,你知道了。我假设您的意思是您想在单个查询中执行此操作。
您可能对阅读一些用于存储树结构的替代设计感兴趣,这些设计确实使您能够使用单个SQL查询来获取所有后代。请参阅我的演示文稿《使用SQL和PHP的层次数据模型》。
您还可以对其他品牌的数据库(例如PostgreSQL)使用递归SQL查询,但是MySQL当前不支持此功能。