mysql - 使用 SQL 合并两个表
问题描述
我有两个需要合并的表。
表 1 是:
ID | 产品代码 | 花费 |
---|---|---|
1 | 101 | 100 |
1 | 102 | 200 |
1 | 103 | 300 |
2 | 201 | 400 |
3 | 301 | 500 |
3 | 302 | 600 |
表2有
ID | 产品代码 | 花费 | 产品使用期限 |
---|---|---|---|
1 | 101 | 100 | 20 |
1 | 102 | 200 | 30 |
3 | 302 | 600 | 40 |
我想合并这些,以便表 2 中仅保留表 1 中的 ID。表 2 不包含每个 ID 的所有产品代码,但我希望我的最终表有它。
输出必须有
ID | 产品代码 | 花费 | 产品使用期限 |
---|---|---|---|
1 | 101 | 100 | 20 |
1 | 102 | 200 | 30 |
1 | 103 | 300 | |
3 | 301 | 500 | |
3 | 302 | 600 | 40 |
对此的任何帮助将不胜感激。我在 ID 上尝试了左连接,但它产生了许多重复项。
解决方案
SELECT *,
(
SELECT `product_tenure`
FROM `second_table`
WHERE `second_table`.`id` = `first_table`.`id`
AND `first_table`.`product_code` = `second_table`.`product_code`
) product_tenure
FROM `first_table`
WHERE `id` IN (SELECT DISTINCT `id` FROM `second_table`)
解释:
id
从第一个表中second table
选择。to keep
因为product_tenure
只有在second_table
选择它们时才结合id
和product_code
结果:
推荐阅读
- c++ - 在 lambda 中仅捕获类的特定成员
- sql - 查询时间序列最近 24 小时的变化
- python - 使用正则表达式在字符串中搜索并替换为 python 列表中的值
- google-cloud-platform - GCP Cloud SQL 问题
- sql - 基于公共列值Oracle SQL选择多行
- gltf - 将usd.a usd.z等转换成gltf?
- javascript - 如何使用javascript动态加速音频播放中的单词间隙?
- python - 为什么第二次运行代码时导入模块不起作用
- android - 当键盘出现时,顶部的 TextField 会离开屏幕
- laravel-7 - 在 Laravel 7.0 上安装 Laravel 收银员包时出现问题