在Mysql中使用If then else

时间:2015-09-21 04:22:16

标签: java mysql sql

您好我是使用MySql语句的新手。

这是我的父表

Name   Sell_amt   Mrp_amt    Cost_amt   Goods_Name           Goods_Weight   Goods_quantity
John       100         90         80         Choclate            1lb               5
samson     100         110        60         mobile              0.5lb             8
James      100         100        70         chair               1lb               5

这是我的Child表格列

 
Name   Sell_amt   Mrp_amt    Special_DealStatus

现在我需要根据父表更新子表。 问题是If(Sell_amt'<' Mrp_amt)然后我需要用1更新Special_DealStatus列。

请建议,我已经google了很多,但无法找到答案。

2 个答案:

答案 0 :(得分:1)

我创建了一个SQL小提琴,供您试用。您正在寻找的是这个

INSERT INTO Child_Table (`name`, `sellamt`, `mrpamt`, `specialdealstatus`)
SELECT name, sellamt, mrpamt,1
FROM Parent_Table
WHERE sellamt < mrpamt;

这是SQL fiddle

这样做是将Parent_Table中的选定值插入到Child_Table WHERE sellamt&lt;你问的是mrpamt。它还将specialdealstatus设置为具有静态值的特殊状态&#39; 1&#39;放入SELECT语句。

    import java.sql.*;

    public class MysqlPreparedStatement
    {

      public static void main(String[] args)
      {
        try
        {
          // create a mysql database connection
          String myDriver = "org.gjt.mm.mysql.Driver";
          String mySqlServer = "jdbc:mysql://localhost/test";
          Class.forName(myDriver);
          Connection conn = DriverManager.getConnection(mySqlServer, "root", "");

      // the mysql statement
      String query = " INSERT INTO Child_Table (`name`, `sellamt`, `mrpamt`,  `specialdealstatus`)
    SELECT name, sellamt, mrpamt,1
    FROM Parent_Table
    WHERE sellamt < mrpamt ";

    // create the mysql insert preparedstatement
          PreparedStatement preparedStmt = conn.prepareStatement(query);
 // execute the preparedstatement
      preparedStmt.execute();

          conn.close();
        }
        catch (Exception e)
        {
          System.err.println("Throwing an exception!");
          System.err.println(e.getMessage());
        }
      }
    }

答案 1 :(得分:0)

你可以像安德烈亚斯已经提到过的那样尝试以下内容。

insert into Child
select Name,Sell_amt,Mrp_amt, case when sell_amt<Mrp_amt then 1 else null end as Special_DealStatus from Parent