mysql数据对比同步_跨数据库mysql语句同步数据和对比运算

首先,A数据库【需要同步的数据库】A_product数据表【产品基本信息】product_id产品唯一IDprice产品价格A_product_option_value数据表【产品选项】product_id产品唯一IDprice差价quan...

首先,A数据库【需要同步的数据库】

A_product 数据表【产品基本信息】

product_id 产品唯一ID

price 产品价格

A_product_option_value 数据表 【产品选项】

product_id 产品唯一ID

price 差价

quantity 数量

gno 同步产品用的唯一标识 每个产品的每个选项的gno是唯一的

A_product_special 数据表 【用户组价格】

customer_group_id = 3 的 price = 内部价

customer_group_id = 4 的 price = 代理价

customer_group_id = 5 的 price = VIP价

-----------------------------------

B数据库【报价数据】

B_price 数据表

GNO 同步产品用的唯一标识 和上面的gno对应

PRICE 对应零售价

INPRICE 对应 经销商价

PROXYPRICE 对应 代理价

VIPPRICE 对应 VIP价

首先,我从 A_product_option_value 【产品选项】找出gno字段有值的数据,把gno有值的数据中product_id相同的几个数据拿出来,在B_price 查到对应gno的PRICE的值,这几个值中,如果存在0,那么就写入A_product_option_value 这个表中的 quantity 【数量】为0,而且不进行对比和计算差价,把另外的数据对比,最小的数,填写在 A_product 对应的 product_id 的 price 值。其他的和 这个最小的做运算。得到的差价,写入 A_product_option_value 对应的GNO的值!

然后把最小的price对应的 INPRICE、PROXYPRICE 和 VIPPRICE 写入 A_product_special 中 customer_group_id = 3 、=4、=5 对应的price的值。

例如 :

A_product 数据表【产品基本信息】

product_id 、price

10086、1000

A_product_option_value 数据表 【产品选项】

product_id 、price、quantity 、 gno

10086、0、0、ABC

10086、0、10、DEF

10086、50、10、FGH

10086、100、10、JKL

A_product_special 数据表 【用户组价格】

product_id 、customer_group_id 、 price

10086 、3、900

10086、4、950

10086、5、980

--------------------

B_price 数据表

GNO 、PRICE、INPRICE 、PROXYPRICE、VIPPRICE

ABC、 0、 0、 0、 0

DEF、1000、 900、 950 980

GHI 1050 950、 1000、 1030

JKL 1100 1000 1050 1080

情况就是大概这样。我不知道应该怎么写,现在只有两个代码,可是这两个代码缺少把0排除的,也缺少把分组价格也弄过去的。

已解决。

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现数据库关联运算的简便方法是使用Java的JDBC技术以及SQL语句中的“数据库名.表名”语法,可以在SQL语句中直接指定不同数据库中的表进行关联查询和运算。 具体实现步骤如下: 1. 在Java程序中通过JDBC连接到不同的数据库。 2. 编写SQL语句,使用“数据库名.表名”语法指定不同数据库中的表进行关联查询和运算。 3. 执行SQL语句,获取查询结果。 下面是一个简单的示例代码: ```java import java.sql.*; public class CrossDatabaseQuery { public static void main(String[] args) { Connection conn1 = null; Connection conn2 = null; try { // 连接到MySQL数据库 String url1 = "jdbc:mysql://localhost:3306/mysql_db"; String user1 = "root"; String password1 = "root"; conn1 = DriverManager.getConnection(url1, user1, password1); // 连接到Oracle数据库 String url2 = "jdbc:oracle:thin:@localhost:1521:oracle_db"; String user2 = "system"; String password2 = "oracle"; conn2 = DriverManager.getConnection(url2, user2, password2); // 执行SQL语句 String sql = "SELECT t1.id, t2.name FROM mysql_db.table1 t1 JOIN oracle_db.table2 t2 ON t1.id = t2.id"; Statement stmt = conn1.createStatement(); ResultSet rs = stmt.executeQuery(sql); // 处理查询结果 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("id: " + id + ", name: " + name); } // 关闭连接和资源 rs.close(); stmt.close(); conn1.close(); conn2.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 以上示例代码中,在SQL语句中使用了“mysql_db.table1”和“oracle_db.table2”语法,指定了不同数据库中的表进行关联查询。在执行SQL语句之前,需要通过JDBC连接到不同的数据库。最后处理查询结果并关闭连接和资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值