首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从select/union构建表

从select/union构建表
EN

Stack Overflow用户
提问于 2019-09-22 23:04:21
回答 1查看 30关注 0票数 0

我有一个从csv文件构建的关系表,其中每一行都包含外部键。

表结构:

代码语言:javascript
复制
| id | tree/nome | tree/regioni/0 | .... | tree/regioni/n     

"n“等于36!我从一个"SELECT/DINSTICT“建立了一个表"regions”,并在上面添加了一个id;

现在我需要构建另一个表,用每一行的"id“来增加”外部键“"tree/regioni/n”。

为了实现这一点,我发现一个不明智的方法是从每个‘tree/regioni/n’的SELECT/UNION中构建表:

代码语言:javascript
复制
SELECT `id`,`tree/regioni/0`
FROM `trees` WHERE 1 
UNION 
SELECT `id`,`tree/regioni/1`
FROM `trees` WHERE 1  
[.....]
UNION 
SELECT `id`,`tree/regioni/N`
FROM `trees` 
WHERE 1
EN

回答 1

Stack Overflow用户

发布于 2019-09-23 00:18:23

你的方法很好。如果trees where是一个视图,那么您就会遇到多次计算视图的问题。即使有一个表,您也必须多次扫描该表。

假设您没有要删除的重复项,请将union更改为union all。您还可以使用cross join

代码语言:javascript
复制
select t.id,
       (case when n = 1 then `tree/regioni/0`
             when n = 2 then `tree/regioni/1`
             . . .
        end)
from t cross join
     (select 0 as n union all
      select 1 as n union all
      . . .
     ) x;

这看起来更复杂,但它只扫描/计算表表达式一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58050456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档