在子查询mysql中返回多行

时间:2015-04-21 12:57:17

标签: mysql sql

我是mysql的新手并且坚持查询。我希望一个表的所有记录和其他表中与第一个表的一列匹配的多个标签。

select A.*,(select B.tag from crm_tags B where tag_id in (A.tags)) from crm_stores A;

crm_stores中有多个商店,每个商店在crm_tags中有多个商店。我想在一个查询中存储商店的所有细节和商店的每个标签。 当我尝试上面的查询时,它会生成错误:子查询返回多行。请帮忙,如何解决这个问题 crm_stores中的标签类似于“2098,2063”,意味着多个标签以逗号分隔。虽然crm_tags已经分隔了条目 提前致谢

this is my first table crm_stores 
+----------+-------+--------+-----------+----------+-
| store_id | guest | budget | tags | discount |
+----------+-------+--------+-----------+----------+- 
| 23 | 5 | 1000 | 2098,2063 | 50% | 
+----------+-------+--------+-----------+----------+- 

this is my second table crm_tags
+--------+--------------+ 
| tag_id | tag | 
+--------+--------------+ 
| 2063 | Chinese | 
| 2098 | North Indian | 
+--------+--------------+ 

1 个答案:

答案 0 :(得分:1)

使用联接:

SELECT A.*, B.tag
FROM crm_stores A 
    LEFT JOIN crm_tags B ON A.tags LIKE concat(concat('%',B.tag_id),'%')

新的mysql小提琴: http://sqlfiddle.com/#!9/dedeb1/7/0