gpt4 book ai didi

sql - 使简单的 self 加入更有效率

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

我有一张 table

id|level|name

级别可以是 1,2 或 3

我想得到的是:

id|lvl1name|lvl2name|lvl3name

我正在使用以下查询

SELECT L1."name" as lvl1name, L2."name" as lvl2name, L3."name" as
lvl3name, L1.id
FROM table as L1
JOIN table as L2 ON L1.id = L2.id
JOIN table as L3 ON L2.id = L3.id
WHERE L1.lvl='1' and L2.lvl='2' and L3.lvl='3';

但是它太慢了!

必须有更好的方法来做到这一点。请帮忙

对于这个例子,我使用的是 postgres,但我很乐意学习一些不依赖于数据库功能的方法。

我不会写程序(只读权限),我从一个 View 中选择了这个。

最佳答案

使用:

  SELECT t.id,
MAX(CASE WHEN t.level = 1 THEN t.name END) AS level1name,
MAX(CASE WHEN t.level = 2 THEN t.name END) AS level2name,
MAX(CASE WHEN t.level = 3 THEN t.name END) AS level3name
FROM YOUR_TABLE t
GROUP BY t.id

如果你需要它是动态的,你需要使用dynamic SQL .

关于sql - 使简单的 self 加入更有效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4019683/

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