我的表格用户
+----+-----------+---------+--------+---------+------+-------+
| 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
中得到它吗?
答案 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;