mysql - 从单列中选择数据作为多条记录
问题描述
我在 mysql 数据库中有以下表结构。
id | files | status
1 a.pdf,b.pdf,c.pdx 1
2 d.pdf,e.pdf.g.pdf 2
3 x.pdf,k.pdf,y.pdf 1
如您所见,附件都存储在一行中。我的查询应该选择 status = 1 的所有行,所以我期望数据采用以下格式。
1 1 a.pdf 1
2 1 b.pdf 1
3 1 c.pdf 1
4 3 x.pdf 1
5 3 k.pdf 1
6 3 y.pdf 1
不幸的是,我不确定我可以使用哪个运算符来完成此操作。我知道 SQL 有支点,但我怀疑即使这样也能解决我的问题。
因此,如果我能在选择查询的条件下获得任何帮助,我将不胜感激。
问候
解决方案
尝试这个:
SET @row_num = 0;
SELECT
(@row_num := @row_num + 1) ROW_NUM,
id,
SUBSTRING_INDEX(SUBSTRING_INDEX(files, ',', idx), ',', -1) FileName,
status
FROM
test
JOIN
(SELECT 1 idx UNION ALL SELECT 2 idx UNION ALL SELECT 3 idx UNION ALL SELECT 4 idx UNION ALL SELECT 5 idx) idxs
on idxs.idx - 2 < LENGTH(files) - LENGTH(REPLACE(files, ",", ""))
WHERE status = 1
;
只需添加与字符串中文件的最大数量一样多的索引。
请注意,最后一个文件名不应有逗号。这是魔术-2
负责的。
推荐阅读
- javascript - Go Echo 没有从 Vue 获取 POST 正文
- c# - 如何从视图页面C#中的字符串中删除html标签
- sql - 在 SQL Server 中选择计数
- android - Fragment 中的 Android ListView 不显示所有项目。最后显示的项目被切割
- c# - C# switch case 数组包含字符串
- php - Wordpress 4.9.8 错误:常量 STYLESHEETPATH
- php - 将包含科学计数法数字的字符串转换为 PHP 中的普通字符串
- c# - Kestrel 如何将数据传回控制台应用程序
- c# - 如何从excel文件中提取图像并通过C# windows服务将其保存到文件中
- node.js - 如何在客户端显示来自 mongodb 的数据?