如何匹配mysql中的逗号分隔值并获取值

时间:2015-03-18 10:19:07

标签: php mysql

我的表格用户

+----+-----------+---------+--------+---------+------+-------+
| id | name      | email   | number | call_no | chek | Extra |
+----+-----------+-------+----------+---------+------+-------+
|  1 | one       | a@a.com | 123    | 1164    |    1 | 1,2   |
+----+-----------+---------+---------+---------+------+------+
|  2 | two       | a@a.com | 123    | 1164    |    1 | 2,1   |
+----+-----------+---------+---------+---------+------+------+

我有一个名为Extra的字段,其中包含值1,2

我的问题是什么?

我需要匹配表id中的1,2和来自用户表的one,two之类的myresult

对于简单的示例查询。我试过的是在下面?

select name from user Extra in('1,2');

我的预期输出是

one,two

如果我试图在爆炸中做,如果我在循环中运行它我可以得到结果,但我需要在sql中得到它吗?

1 个答案:

答案 0 :(得分:0)

您应该有一个单独的表,每个id一行,每个值extra。这称为联结表。 SQL有一个很好的数据结构用于存储事物列表,称为而不是字符串。而且,将数字存储为字符更糟糕。

但是,您可以使用join和聚合:

执行您想要的操作
select id, group_concat(e.name) as names
from table t left join
     table e
     on find_in_set(t.id, e.extra) > 0
group by t.id;