加入时如何不使用通配符避免列名重复

Posted

技术标签:

【中文标题】加入时如何不使用通配符避免列名重复【英文标题】:How not to use wildcards to avoid duplicate column names when joining 【发布时间】:2017-02-02 15:55:01 【问题描述】:

这是我想要的(ROQ & Trigger 列可以为空)

这是我想加入的 Query 3

加入查询。

我已经尝试过,但该列看起来不像 Query3。

SELECT t1.*, t2.*, t3.*
FROM CrossTab1 t1 
INNER JOIN CrossTab2 t2
ON t1.ItemCode = t2.ItemCode
INNER JOIN Query3 t3
ON t3.ItemCode = t3.ItemCode 

我的第二个问题:如何删除column t2.ItemCodet3.ItemCode?如上面的excel图像?

我的其他CrossTab代码详解:sql - min of 9 weeks max of 15 weeks average of 16 weeks

提前非常感谢您!我会尽可能地响应。

【问题讨论】:

这个问题非常非常愚蠢。只需从每个子查询中列出您想要的每个列名。这是 sql 中别名和通配符的超级基本用法。 @hogan 抱歉这个愚蠢的问题 您加入 Query3 没有用; ON t3.ItemCode = t3.ItemCode @NicholasV。非常感谢! 【参考方案1】:

这有两个赞成票,所以我会回答它......

你使用字段名而不是通配符来指定你真正想要的列名,就像下面的代码

由于您提供有关我不得不猜测的不同交叉表的字段名称的任何详细信息。但是使用它作为在指定列名时如何不使用通配符的模板。

SELECT t1.itemcode, t1.november, t1.december, t1.january, t2.[avg 16 weeks], t3.fieldnamefromt3
FROM CrossTab1 t1 
INNER JOIN CrossTab2 t2
ON t1.ItemCode = t2.ItemCode
INNER JOIN Query3 t3
ON t1.ItemCode = t3.ItemCode 

【讨论】:

以上是关于加入时如何不使用通配符避免列名重复的主要内容,如果未能解决你的问题,请参考以下文章

在 find 和 ls 中使用通配符 [重复]

[MySQL] 用通配符进行过滤

MySQL 的列名中的通配符

Prolog 通配符:重复列表而不更改通配符值

MS Access - 通配符加入与无加入过滤

使用通配符替换字符串 php [重复]