首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接表t1和t2,只保留t1的一列

连接表t1和t2,只保留t1的一列
EN

Stack Overflow用户
提问于 2019-10-23 18:18:42
回答 1查看 180关注 0票数 0

假设我们有两张桌子:

  • t1: (c1a, c3, c4, c5 ... c1000)
  • t2: (c1b, c2)

我希望基于匹配的c2 /c1b值将c1a添加到t1中。c1ac1b有相同的值,我只是将它们命名不同,以避免歧义。我参加了一次:

select * from t1 left join t2 on t1.c1 = t2.c1 as t3

现在,t3将获得我所需的数据,但看起来如下所示:

t3: (c1a, c1b, c2, c3, c4, c5 ... c1000)

这是正确的,因为它有我想要的所有列。但是,它有一个我不想要的额外列--因为我最初做了select *,这两个表中的所有列都包括在内。如果我不想要额外的专栏怎么办?

  • I可以手动指定我想要的列:select c1a, c2, c3, c4, c5 ... c1000 from t1 left join ...问题很明显,
  • 我可以单独删除c1b。这似乎很麻烦;我觉得这应该在一句话中做到。

是否有类似于select all columns except for x, y from ...的SQL表达式?

EN

回答 1

Stack Overflow用户

发布于 2019-10-23 18:22:45

如果唯一重复的列来自join,那么using子句将提供帮助:

代码语言:javascript
复制
select *
from t1 left join
     t2 
     using (c1);

注意:并非所有数据库都支持using (尽管它是SQL标准)。

如果几乎所有列都来自其中一个表,则可以显式地获取使用*的列和其余的列:

代码语言:javascript
复制
select t1.specialcol, t2.*
from t1 left join
     t2 
     on t1.c1 = t2.c1;

确实存在有用于此目的的except子句的数据库。但这种情况并不常见。

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

https://stackoverflow.com/questions/58528851

复制
相关文章

相似问题

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