簡體   English   中英

SQL:連接具有不同類型列的兩個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM