您好我是使用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了很多,但无法找到答案。
答案 0 :(得分:1)
我创建了一个SQL小提琴,供您试用。您正在寻找的是这个
INSERT INTO Child_Table (`name`, `sellamt`, `mrpamt`, `specialdealstatus`)
SELECT name, sellamt, mrpamt,1
FROM Parent_Table
WHERE sellamt < mrpamt;
这样做是将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