首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:用不同类型的列连接两个表

SQL:用不同类型的列连接两个表
EN

Stack Overflow用户
提问于 2020-08-30 19:30:40
回答 2查看 131关注 0票数 0

我有两张表,列如下:

表1:

代码语言:javascript
复制
OrderID    RetailerName    SKUs (varchar)    OrderDate
-------------------------------------------------------
123        ABC             1,2               2016-11-11
124        DEF             3,4               2016-11-12

表2:

代码语言:javascript
复制
SKU(int)          Product
--------------------------
1                 xx
2                 xy
3                 xz
4                 yx

预期产出:

代码语言:javascript
复制
OrderID   RetailerName   OrderDate   Product
--------------------------------------------
  123     ABC            2016-11-11  xx
  123     ABC            2016-11-11  xy
  124     DEF            2016-11-12  xz
  124     DEF            2016-11-12  yx

如何基于SKU连接这两个表,即如何比较来自table1的SKUs (varchar)列和来自table2的SKU (int)列?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-30 19:50:03

我建议将模式规范化为@Sodmond suggested。但是,如果这不是一个选项,则可以使用find_in_set作为联接条件--它将隐式地将int从table2转换为字符:

代码语言:javascript
复制
SELECT t1.OrderID, RetailerName, OrderDate, Product
FROM   table1 t1
JOIN   table2 t2 ON FIND_IN_SET(t2.sku, t1.skus) > 0
票数 3
EN

Stack Overflow用户

发布于 2020-08-30 19:38:31

您需要重新设计架构,检查我如何为您重新创建表。

代码语言:javascript
复制
table1:

OrderID      RetailerName          SKUs(int)              OrderDate
123          ABC                   1                        2016-11-11
123          ABC                   2                        2016-11-11
124          DEF                   3                        2016-11-12
124          DEF                   3                        2016-11-12


table2:

SKU(int)          Product
1                 xx
2                 xy
3                 xz
4                 yx

避免在SKU字段中存储多个值,然后您将能够使用联接查询。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63661365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档