【问题标题】:SQL full join in JavaJava中的SQL完全连接
【发布时间】:2012-03-28 23:03:28
【问题描述】:

我正在尝试连接两个表,但无法正确使用 SQL。我的 SQL 语句比下面的 SQL 复杂得多,但下面的 SQL 将展示原理。尝试引用 t 或 p 时出现无效标识符异常。我怎么不能参考这些?我正在使用 Oracle DB。

SQL:

SELECT * FROM ((SELECT * FROM transactions t) FULL JOIN (SELECT * FROM payments p) ON (t.id = p.trans_id));

例外:

Caused by: java.sql.SQLException: ORA-00904: "P"."TRANS_ID": invalid identifier

【问题讨论】:

    标签: java sql oracle join


    【解决方案1】:

    你并没有真正给你的查询一个别名,你应该这样做:

    SELECT * 
    FROM (SELECT * FROM transactions) t 
    FULL JOIN (SELECT * FROM payments) p 
    ON (t.id = p.trans_id);
    

    当然,假设您使用的是真正的派生表,而不是那些简单的SELECTs,否则您应该直接使用这些表。

    【讨论】:

    • 哦,我现在明白了。感谢您的快速回复!
    【解决方案2】:

    别名在错误的位置。派生表的别名应该在 右括号之后:

    SELECT *
    FROM
    (SELECT * FROM transactions) t
    FULL JOIN
    (SELECT * FROM payments) p
    ON t.id = p.trans_id
    

    请注意,在如此简单的查询中使用派生表是没有意义的。我假设您确实需要派生表,并且您只是简化了对该问题的查询。

    【讨论】:

    • 哦,我现在明白了。感谢您的快速回复!
    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2015-12-11
    • 2018-07-12
    相关资源
    最近更新 更多