Join
基於列中包含的變數值連接表
我有兩個表,其中日期作為要加入的主要列。但是,我還需要根據一個列中的值進行連接,該值部分包含在另一個表的列中。
Table 1: date, audience Table 2: date, channel
表 1 中的“
audience
”具有部分包含在表 2 中的“通道”中的值,如下所示:audience = "oldpeople" channel = "oldpeople_email"
有數百個潛在的“受眾”值和“渠道”值,所以我無法命名這些值,它必須動態工作。這是我嘗試過但沒有奏效的方法:
SELECT * FROM table1 left JOIN table2 ON ((table2.Channel like '%table1.audience%') AND (table2.date = table1.date) )
使用您編寫該連接條件的方式,SQL Server 將準確搜尋“table1.audience”,而不是列值。單引號內的列名僅被視為字元串文字,而不是基礎列值。
試試這個:
SELECT * FROM table1 LEFT JOIN table2 ON ((table2.Channel like '%' + table1.audience + '%') AND (table2.date = table1.date))
這將連接 table1.audience 中包含的值並將其包裝在萬用字元中。
如果沒有必要,我建議刪除前導萬用字元,因為如果您正在處理大型數據集(因為您將強制掃描),這將顯著影響性能。