簡體   English   中英

MYSQL LEFT加入“ LIKE”

[英]MYSQL LEFT join with 'LIKE'

我正試圖加入兩個表。 問題是其中一個表實際上在單元格中具有逗號分隔的列表。 我需要加入“ csv單元”。 to join with and give me a 以我基於沙拉的示例為例,我希望將一起加入並給我一份

   SELECT tbl_a.item, tbl_b.item, tbl_b.salad 
     FROM tbl_a
LEFT JOIN tbl_b
       ON  tbl_a.item LIKE CONCAT('%', tbl_b.item, '%')

我嘗試了上面的示例以及其他一些變化。 我意識到這不會是有效的查詢。 問題是基礎數據集早於我。 幸運的是,我只需要運行一次查詢。

Expected Result
+--------+------------+
| item   |   salad    |
+--------+------------|
|  ham   | chef_salad |
| bacon  | cobb_salad |
| turkey | cobb_salad |
+---------------------+


tbl_a 
+------+
| item |
+------+
|bacon | 
| ham  | 
|turkey|
+------+  

tbl_b
+--------------+------------+
|     item     |  salad     |
+--------------+------------+
| ham          | chef_salad |
| bacon,turkey | cobb_salad |
+--------------|------------+

注意:

我在您的數據庫中顯示,表中有很多space characters 在插入數據庫之前,請嘗試修剪它。 例如:
從:
ham => [space]ham[space]
至:
ham => [no-space]ham[no-space]
希望你能理解我的意思。


你可以試試:
這個對我有用:

mysql> use test;
Database changed
mysql> SELECT tbl_a.item as item_a, tbl_b.item as item_b, tbl_b.salad
    -> FROM tbl_a LEFT JOIN tbl_b 
    -> ON FIND_IN_SET(tbl_a.item, tbl_b.item);
+--------+--------------+------------+
| item_a | item_b       | salad      |
+--------+--------------+------------+
| bacon  | bacon,turkey | cobb_salad |
| ham    | ham          | chef_salad |
+--------+--------------+------------+
2 rows in set (0.00 sec)

更新:

這是我的桌子:

mysql> select * from tbl_a;
+-------+
| item  |
+-------+
| bacon |
| ham   |
+-------+

mysql> select * from tbl_b;
+--------------+------------+
| item         | salad      |
+--------------+------------+
| bacon,turkey | cobb_salad |
| ham          | chef_salad |
+--------------+------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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