【问题标题】:Create view with extra column indicating type in SQL Server在 SQL Server 中创建带有指示类型的额外列的视图
【发布时间】:2012-04-18 11:37:21
【问题描述】:

我需要创建一个视图,其中有一列指示该行来自哪个表。

我使用的是 SQL Server 2005 Express

更具体地说,我有一个数据库,其中包含一个名为 users 的表、一个名为 developers 的表和一个包含银行帐户数据的单独表。我需要一个显示用户和开发者的银行账户信息的视图,以及一个额外的列来说明该行是来自用户还是开发者。

我有这个:

CREATE VIEW bankDataView
AS

SELECT accountinfo, name, lastname, devcode as id
FROM developer d INNER JOIN bankdata bd ON
d.bankdataID = bd.bankDataID
UNION
SELECT accountinfo, name, lastname, userID as id
FROM user u INNER JOIN bankdata bd ON
u.bankdataID = bd.bankdataID 

但现在我需要知道如何获得额外的列。

这可能吗,还是我应该考虑另一种方法?

【问题讨论】:

    标签: sql-server view sql-server-2005-express


    【解决方案1】:

    只需在每个选择语句中添加一个额外的列,说明数据来自哪个表。这样你就可以轻松区分开发者和用户了。

    CREATE VIEW bankDataView
    AS
    
    SELECT accountinfo, name, lastname, devcode as id, 'Developer' as TableName
    FROM developer d 
    INNER JOIN bankdata bd 
        ON d.bankdataID = bd.bankDataID
    UNION
    SELECT accountinfo, name, lastname, userID as id, 'User' as TableName
    FROM user u 
    INNER JOIN bankdata bd 
        ON u.bankdataID = bd.bankdataID 
    

    【讨论】:

      【解决方案2】:

      bluefeet 在逻辑上是正确的,但是如果你使用 UNION ALL 而不是普通的 UNION 性能会更好。 Plain UNION 做了额外的工作来消除联合中的重复结果。由于新的 TableName 列,不会有重复的结果

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-28
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2013-09-06
        • 1970-01-01
        • 2017-11-07
        相关资源
        最近更新 更多