我的表用户
+----+-----------+---------+--------+---------+------+-------+
| 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中表ID和myresult中的1,2,例如
one,two
对于简单的示例query.what我试图在下面?
select name from user Extra in('1,2');
我的预期输出是
one,two
如果我尝试在爆炸中执行,并且如果我在循环中运行它,我可以得到结果,但是我需要在
sql
中获得它? 最佳答案
您应该有一个单独的表,每个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;