mysql - MySQL:我有两个表,1 个生产表和 1 个存档表。我需要从两者中选择不同的记录,因为有些记录是相同的
问题描述
我有一个包含 2 个表的 MySQL 数据库。 prod
正在制作中,并archive
已存档记录。列完全相同。 prod
中没有所有记录archive
。
我需要在两个表的 1 个连接中访问不同的记录,所以我不会在 Excel 中复制记录并放弃计算。
SELECT
a.order_no,
a.date_of_sale,
a.cost,
b.order_no,
b.date_of_sale,
b.cost
FROM
`prod` AS a
LEFT JOIN `archive` AS b ON a.order_no = b.order_no
结果:
+----------+--------------+------+-------------+-----------------+---------+
| order_no | date_of_sale | cost | order_no(1) | date_of_sale(2) | cost(2) |
+----------+--------------+------+-------------+-----------------+---------+
| 333 | 11-28-2017 | 10 | 333 | 11-28-2017 | 10 |
| 334 | 11-28-2017 | 12 | 334 | 11-28-2017 | 12 |
| 336 | 11-29-2017 | 30 | 335 | 11-28-2017 | 25 |
| 337 | 11-30-2017 | 15 | | | |
| 338 | 11-30-2017 | 17 | 338 | 11-28-2017 | 17 |
+----------+--------------+------+-------------+-----------------+---------+
如何构建查询以过滤两个表中相同的记录?
我想要的结果:
+----------+--------------+------+
| order_no | date_of_sale | cost |
+----------+--------------+------+
| 333 | 11-28-2017 | 10 |
| 334 | 11-28-2017 | 12 |
| 335 | 11-28-2017 | 25 |
| 336 | 11-29-2017 | 30 |
| 337 | 11-30-2017 | 15 |
| 338 | 11-30-2017 | 17 |
+----------+--------------+------+```
解决方案
我怀疑你想要union
而不是join
:
select order_no, date_of_sale, cost from prod
union
select order_no, date_of_sale, cost from archive
union
删除结果集之间(以及结果集内)的重复项。
推荐阅读
- php - 我想同时检查两个变量的值
- reactjs - 我无法在 Redux 中使用调度操作更新我的状态(使用 Redux-starter-kit)
- openapi - 是否可以在 OpenAPI v3 规范中禁止未知查询参数?
- oracle - Ords auto REST - 设置自动休息查询返回的默认行数
- hazelcast - Hazelcast 是否支持这个 3 节点网络分区?
- sql - SQL - 根据最大值提取不同的行
- r - R strsplit 将最后一个空元素保留为空字符串
- android - 解压 aab 资源.pb
- firebase - Firebase 云消息传递 [FCM] 或任何消息传递服务如何连接我们的手机?
- java - eclipse中的/src文件夹在下载的项目中是空的