[英]SQL: Join two tables with different type of columns
我有兩個帶有以下列的表:
表格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) 列?
我建議按照@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
您需要重新設計架構,檢查我如何為您重新創建表。
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 字段中存儲多個值,然后您將能夠使用連接查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.