我的表用户

+----+-----------+---------+--------+---------+------+-------+
| 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;

10-02 00:10
查看更多