我的表格用户
+----+-----------+---------+--------+---------+------+-------+
| 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 和 myresult,例如用户表中的 one,two
对于简单的示例查询。我尝试过的内容在下面?
select name from user Extra in('1,2');
我的预期输出是
一,二
如果我尝试在爆炸中执行操作,并且如果我在循环中运行它,我可以得到结果,但我需要在 sql
中得到它,是否可以得到它?
最佳答案
您应该有一个单独的表,每个 id
一行,每个 extra
值。这称为联结表。 SQL 有一个很棒的数据结构来存储事物列表,称为表而不是字符串。而且,将数字存储为字符更糟糕。
但是,您可以通过加入
和聚合执行您想要的操作:
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;
关于php - 如何匹配mysql中的逗号分隔值并获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29119378/