【问题标题】:java prepared statementjava准备好的语句
【发布时间】:2012-12-04 08:38:09
【问题描述】:

我有这样的需求...

需要执行一个javaprepared statement示例:

String sql = "select first_name from student where roll_no :=1";
connection.prepareStatement(sql);

但问题是,有时表中可能没有上述查询的行。 在这种情况下,我想查询第二个表说student2。因此,现在的 sql 查询将是:

String sql2 = "select first_name from student2 where roll_no :=1";

有没有办法实现在单个 sql 查询中从另一个 table(student2) 中进行选择的条件。

我想要这样的伪代码:

String sql = "if student1 table doesn't have a roll_num, then query student2 table";

【问题讨论】:

  • 我认为这不是 SQL 问题,而更多是您的数据库设计的问题。也许你应该重新考虑你的数据库表,所以你不需要那么复杂的查询。

标签: java sql jdbc prepared-statement


【解决方案1】:

创建一个使用准备好的语句调用的数据库过程 MySql, Oracle。 希望这会有所帮助

【讨论】:

    【解决方案2】:

    虽然您的设计不好,但我正在暗示实现您的要求。执行第一个查询时,只需检查是否有可用的结果集,如果没有,则执行第二个查询。

    ResultSet rs = statement.execute();
    if (!rs.next()){
    //ResultSet is empty
    }
    

    在 If 块中,您需要执行第二个查询。

    注意:如果不可能,首先重新考虑您的设计。这个解决方案有效,一个蹩脚问题的蹩脚解决方案:)

    【讨论】:

      【解决方案3】:

      我认为你可以使用例如联合为:

      select val from (select 'A' as val from DUAL
                       union
                       select 'B' as VAL from DUAL)
      where rownum = 1;
      

      但是@tbraun89 是正确的首先考虑您的数据库结构

      【讨论】:

        猜你喜欢
        • 2012-12-18
        • 2018-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        • 1970-01-01
        相关资源
        最近更新 更多