我正在尝试加入两个表格。问题是其中一个表实际上在单元格内部有一个以逗号分隔的列表。我需要加入'csv cell'。使用我的沙拉为例我希望培根加入培根,土耳其并给我一个 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 |
+--------------|------------+
答案 0 :(得分:1)
我在你的数据库中显示,你的表中有很多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 |
+--------------+------------+