MYSQL 左连接 'LIKE'

标签 mysql left-join sql-like

我正在尝试连接两个表。问题是其中一个表的单元格内实际上有一个以逗号分隔的列表。我需要加入“csv 单元格”。使用我的基于沙拉的示例,我希望培根培根,火鸡一起加入,并给我一份cobb_salad

   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 |
+--------------|------------+

最佳答案

注意:

我在您的数据库中显示,您的表中有许多空格字符。 请在插入数据库之前尝试修剪它。 例如:
来自:
火腿 => [空格]火腿[空格]
致:
火腿 => [无空格]火腿[无空格]
希望你明白我说的话。

<小时/>

你可以尝试:
它对我有用:

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 |
+--------------+------------+

关于MYSQL 左连接 'LIKE',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7643030/

相关文章:

mysql - 基于最长日期的项目费率

php - 在 mysql 中用日期重命名输出文件

MySQL join, count and group by 多个数据库

MYSQL:格式化输出中列的值

mysql - 将 LIKE 子句与整个单词进行比较

php - MySQL WHERE LIKE 无法使用 php 和 pdo bind 处理多个字段

php - 如何在 MYSQL 查询中组合 "LIKE"和 "IN"?

mysql - #1005 - 无法创建表...(错误号 : 150)

mysql - SQL 选择语句

mysql - 如何优化此 MySQL 查询以更快地执行?