mysql - SQL:连接具有不同类型列的两个表
问题描述
我有两个包含以下列的表:
表格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
即如何将SKUs
table1 中的(varchar) 列与SKU
table2 中的(int) 列进行比较来连接这两个表?
解决方案
我建议按照@Sodmond 的建议规范化架构。但是,如果这不是一个选项,您可以将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
推荐阅读
- android - 如何将 Elsa 工作流与 TriggereSignal 活动和 UserTask 活动 [elsa-workflows] 一起使用?
- python - 从线程python中获取其他文件的数据
- flutter - RichText 的 textSpan 周围的边框
- java - 为什么 Doug 使 CopyOnWriteList 对象数组易失?
- powershell - 从 CMD 调用 Powershell 函数
- php - SQL 多个结果集
- multithreading - 多线程 PowerShell 脚本
- java - 为什么我只能显示 NFC 标签 (nDEF) 的前 4 页
- css - Angular ::ng-deep 不能以全局方式工作
- excel - 应用 IF()、ISNUMBER() 和/或 SEARCH() 从字符串中提取文本