gpt4 book ai didi

mysql - SQL:按foreign_key数字列表排序

转载 作者:行者123 更新时间:2023-11-29 11:43:17 24 4
gpt4 key购买 nike

一个简化的例子:

我有一个名为 things 的 SQL 表。事物本身有一个id和一个name。事物是树的一部分,例如一个事物可以有一个 parent ;具体如何存储并不重要,重要的是可以获取从根节点到当前事物的事物 id 列表。

我还有另一个表,名为properties。属性具有 thing_id 列、name 列和 value 列。

我现在想要获取当前事物的所有属性,按 thing_id 排序,按照从根事物到当前事物的路径顺序

例如,如果当前事物像这样嵌套:Root(1) > Vehicle(4) > Car(2) > Hybrid(3),我希望返回属性列表首先是具有 thing_id==1 的属性,然后是具有 thing_id == 4 的属性,然后是 thing_id==2,最后是thing_id==3

如何使用 SQL 来完成此操作? (不使用 N+1 选择)

最佳答案

在 SQL 中,这可以通过使用递归查询来实现。这是一个例子

DECLARE @item as varchar(10) 

with CTE (main_part, sub_part, NestingLevel)
as
(
select main_part, sub_part, 1 from tblParts
where main_part = @item

union all

select tblParts.main_part, tblParts.sub_part, (NestingLevel + 1) from tblParts
inner join CTE on tblParts.main_part = CTE.sub_part
)

select * from CTE

为了在 MySQL 中解决这个问题,您可以尝试临时表方法。这是一个很好的例子:How to do the Recursive SELECT query in MySQL?

关于mysql - SQL:按foreign_key数字列表排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35393403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com