使简单的自加入更加高效
我的表
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,但我很乐意学习一些不依赖于数据库功能的方法。
我无法编写过程(只读访问),并且我从视图中选择它。
I have a table
id|level|name
level can be 1,2 or 3
what I want to get is:
id|lvl1name|lvl2name|lvl3name
I'm using the following query
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';
but it is soooooo slow!
there must be a better way to do this. please help
for this example I'm using postgres, but I'd be happy to learn some way that is not database feature dependant.
I can't write procedures (read only access), and I select this from a view.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用:
如果你需要这是动态的,你需要使用 动态 SQL 。
Use:
If you need this to be dynamic, you need to use dynamic SQL.