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

标签 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 和 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/

相关文章:

php - 全局转义变量

php - 如何在php中逐行读取

php - 在 Wordpress 中编辑 CSS 媒体查询

php - 无法连接 : Access denied for user 'root' @'localhost'

mysql - 如何使用最新报告日期有效追踪 cargo 的最后位置?

MySQL - 用每组的行号更新表

php - 如何在运行 PHP 的 app_server 上查看 'syslog' 输出

php - 通过 PHP 从 Postgres 正确读取 bool 值

php - 数据库结构,怎么想

php - 在 functions.php wordpress 中设计一个 html 表格