我有两张表,列如下:
表1:
OrderID RetailerName SKUs (varchar) OrderDate
-------------------------------------------------------
123 ABC 1,2 2016-11-11
124 DEF 3,4 2016-11-12表2:
SKU(int) Product
--------------------------
1 xx
2 xy
3 xz
4 yx预期产出:
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)列?
发布于 2020-08-30 19:50:03
我建议将模式规范化为@Sodmond suggested。但是,如果这不是一个选项,则可以使用find_in_set作为联接条件--它将隐式地将int从table2转换为字符:
SELECT t1.OrderID, RetailerName, OrderDate, Product
FROM table1 t1
JOIN table2 t2 ON FIND_IN_SET(t2.sku, t1.skus) > 0发布于 2020-08-30 19:38:31
您需要重新设计架构,检查我如何为您重新创建表。
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字段中存储多个值,然后您将能够使用联接查询。
https://stackoverflow.com/questions/63661365
复制相似问题