如何基于Table1的唯一记录,查询匹配的Table2数据?
解决方案:关联两张表匹配目标记录
先把两张表的数据整理出来方便对照:
Table1(唯一记录集合)
| DC | Item | Day |
|---|---|---|
| 6006 | 123 | May 1 |
| 6006 | 123 | May 2 |
| 7036 | 456 | May 6 |
Table2(包含所需补充字段)
| DC | Item | Day | ShippedCases | Label Type |
|---|---|---|---|---|
| 6006 | 123 | May 1 | 100 | A |
| 6006 | 123 | May 2 | 200 | A |
| 6006 | 123 | May 2 | 500 | B |
| 7036 | 456 | May 2 | 300 | B |
| 7036 | 456 | May 6 | 400 | A |
实现SQL查询
我们可以用INNER JOIN关联两张表,通过DC、Item、Day三个字段做精准匹配,就能从Table2中筛选出完全匹配Table1的所有记录,同时拿到缺失的ShippedCases和Label Type字段:
SELECT t2.DC, t2.Item, t2.Day, t2.ShippedCases, t2.`Label Type` FROM Table2 t2 INNER JOIN Table1 t1 ON t2.DC = t1.DC AND t2.Item = t1.Item AND t2.Day = t1.Day;
查询结果说明
执行这条SQL后,你会得到以下符合要求的结果:
| DC | Item | Day | ShippedCases | Label Type |
|---|---|---|---|---|
| 6006 | 123 | May 1 | 100 | A |
| 6006 | 123 | May 2 | 200 | A |
| 6006 | 123 | May 2 | 500 | B |
| 7036 | 456 | May 6 | 400 | A |
核心逻辑是INNER JOIN只会保留两张表中满足匹配条件的行,刚好契合你“从Table2筛选与Table1完全匹配记录”的需求。就算Table1有重复记录(不过你提到它是唯一记录集合),也不会影响结果的准确性。
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

