如何对比两张表的Date、emp. code及PMS值?求MySQL代码
问题描述
现有两张字段结构相同的表,PMS值每日会发生变动。需要对比两张表的Date、emp. code和PMS字段,当同一日期、同一员工的PMS值在两张表中不一致时,输出包含ID、Date、emp. code、tbl1_PMS、tbl2_PMS的结果。
表1示例数据
| ID | Date | emp. code | PMS |
|---|---|---|---|
| 1 | 2023-12-01 | V1856 | 5 |
| 2 | 2023-12-10 | V2584 | 4 |
| 3 | 2023-12-15 | V3643 | 5 |
| 4 | 2023-12-15 | V1856 | 5 |
| 5 | 2023-12-16 | V2584 | 6 |
表2示例数据
| ID | Date | emp. code | PMS |
|---|---|---|---|
| 1 | 2023-12-01 | V1856 | 4 |
| 2 | 2023-12-10 | V2584 | 4 |
| 3 | 2023-12-15 | V3643 | 5 |
| 4 | 2023-12-15 | V1856 | 5 |
| 5 | 2023-12-16 | V2584 | 2 |
期望输出
| ID | Date | emp. code | tbl1_PMS | tbl2_PMS |
|---|---|---|---|---|
| 1 | 2023-12-01 | V1856 | 5 | 4 |
| 2 | 2023-12-16 | V2584 | 6 | 2 |
MySQL 查询代码
SELECT t1.ID, t1.Date, t1.`emp. code`, t1.PMS AS tbl1_PMS, t2.PMS AS tbl2_PMS FROM 表1 t1 JOIN 表2 t2 ON t1.Date = t2.Date AND t1.`emp. code` = t2.`emp. code` WHERE t1.PMS != t2.PMS;
代码说明
- 用
JOIN通过Date和emp. code关联两张表,确保对比的是同一日期、同一员工的记录 - 通过
WHERE子句筛选出PMS值不一致的记录 - 对两张表的PMS字段重命名,直观区分数据来源
内容的提问来源于stack exchange,提问作者Balasubramaniam Kandasamy
相关产品推荐
相关产品推荐

