显示来自其他 tbl 的列别名

Posted

技术标签:

【中文标题】显示来自其他 tbl 的列别名【英文标题】:display column alias from other tbl 【发布时间】:2009-09-15 03:33:36 【问题描述】:

我有 2 个表 tbl1 和 tbl2 tbl1 有用户 ID col1 col2 col3(每个用户多条记录) EDIT tbl2 有用户 ID col4 col5 col6 (每个用户一条记录) 在我原来的帖子中,我也在这里列出了 col3,这是偶然的。

tbl2 用于存储每个用户的自定义列名。

现在我需要知道如何在结果中显示此自定义列名称。 即我如何引用别名来为每个用户提取此自定义列名。

选择 col1 AS (不知道放什么...)

类似于 ...col1 AS tbl2.col3 where userid = "testuser" 我怎样才能做到这一点? 也许某种外部/内部查询???

谢谢

【问题讨论】:

您能更好地命名这些列吗?两张表之间的 col3 是否相同? 哇。首先感谢所有 cmets :) 我只是来这里看看我是否有答案 9 如果有帖子,我期待电子邮件。无论如何,我很抱歉使用 col3。它应该有 tbl2 有 col4 col5 col6。我没有创建列或表,所以我很难使用一些通用名称。我会尝试看看这些解决方案是否有效。再次感谢 【参考方案1】:

正确的语法是:

SELECT tbl2.userid, tb2.col3 AS [your name here], tbl1.col1 AS [your name here], ...
FROM tbl2
INNER JOIN tbl1 ON tbl1.userid = tb2.userid
WHERE tbl2.userid = "testuser"

列本身以表名(不是别名)为前缀。仅当两个不同的表共享一个列名时才真正需要这样做,但即使在更简单的情况下也可以养成这个习惯。

【讨论】:

OP 正在尝试将 col3 别名为 col6 的任何值,而不仅仅是尝试对列进行别名。【参考方案2】:

做这样的事情:

SELECT tbl1.col1 as tbl1_col1,tbl2.userid as tbl2_usrid, tbl2.col3 as tbl2_usrid_custcol
FROM tbl1,tbl2
WHERE tbl1.userid = tbl2.userid;

【讨论】:

【参考方案3】:

呈现在表示层,而不是数据库端:

select
    a.userid,
    col1,
    col2,
    a.col3,
    b.col3 as user_col1,
    b.col4 as user_col2,
    b.col5 as user_col3
from
    tblA a
    inner join tblB b on
        a.userid = b.userid
where
    userid='testuser'

然后,在应用程序端,只需使用col4col5col6 作为列名,然后再显示记录。

【讨论】:

为了争论,col3 在两个表之间是共享的。你需要选择一个而不是另一个。【参考方案4】:

这必须作为动态 SQL(不理想)或在表示层(非常优选)来完成。

【讨论】:

以上是关于显示来自其他 tbl 的列别名的主要内容,如果未能解决你的问题,请参考以下文章

过滤 PIG LATIN 脚本中的列在为空的单元格上插入来自其他列的数据

更新之前的Oracle SQL触发器,用于设置来自其他实体的列值

我用linq to sql查询,把结果显示到DataGridView中,但是我想在DataGridView中显示列的别名

在 SQL 视图中的列选择中使用左连接别名

Windows phone 7 - 在 GridView 中重复显示重复的列

如何选择一个查询中的列不在其他查询的列之间的记录?