【问题标题】:db2, with clause, variables and multiple joindb2,with 子句、变量和多重连接
【发布时间】:2016-10-20 06:35:22
【问题描述】:

我只是不知道如何使用创建和使用变量的好技术,如下例所示:

WITH t(myvar) AS (VALUES('welcome'))
SELECT tablename.*
FROM   tablename, t
WHERE  tablename.column1 = t.myvar

在这样的多连接查询中:

WITH t(myvar) AS (VALUES('welcomeagain'))
SELECT 
    tablename.*,
    joinedtable.valueid
FROM   
    tablename, t?
    left join joinedtable on
    joinedtable.keyid = tablename.keyid
WHERE  
    tablename.column1 = t.myvar

我的意思是,我必须在哪里、如何以及到什么地方加入“t”?环境是 DB2 ISeries 7.2。

非常感谢您的帮助

马丁

【问题讨论】:

    标签: join db2 with-statement


    【解决方案1】:

    也许这就是你想要的?

    WITH t(myvar) AS (VALUES('welcomeagain'))
    SELECT 
        tablename.*,
        t.myvar, 
        joinedtable.valueid
    FROM   
        tablename
        join t on tablename.column1 = t.myvar
        left join joinedtable on joinedtable.keyid = tablename.keyid
    

    或者这个

    WITH t(myvar) AS (VALUES('welcomeagain'))
    SELECT 
        tablename.*,
        t.myvar, 
        joinedtable.valueid
    FROM   
        tablename
        left join t on tablename.column1 = t.myvar
        left join joinedtable on joinedtable.keyid = tablename.keyid
    

    或者这个

    WITH t(myvar) AS (VALUES('welcomeagain'))
    SELECT 
        tablename.*,
        t.myvar, 
        joinedtable.valueid
    FROM   
        tablename
        cross join t 
        left join joinedtable on joinedtable.keyid = tablename.keyid
    

    你不想要的是逗号——因为这是一种旧式连接,并且将它与新式连接结合起来的语法总是有点迟钝(如果它确实有效的话。)

    【讨论】:

    • @brosoft - 我建议您尝试其他选项,以便您知道哪个最正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2021-09-26
    相关资源
    最近更新 更多