开发者社区> 问答> 正文

MySQL用逗号分隔值联接两个表?mysql

我有2张桌子如下

笔记表

╔══════════╦═════════════════╗ ║ nid ║ forDepts ║ ╠══════════╬═════════════════╣ ║ 1 ║ 1,2,4 ║ ║ 2 ║ 4,5 ║ ╚══════════╩═════════════════╝ 职位表

╔══════════╦═════════════════╗ ║ id ║ name ║ ╠══════════╬═════════════════╣ ║ 1 ║ Executive ║ ║ 2 ║ Corp Admin ║ ║ 3 ║ Sales ║ ║ 4 ║ Art ║ ║ 5 ║ Marketing ║ ╚══════════╩═════════════════╝ 我想查询我的Notes表并将'forDepts'列与Positions表中的值相关联。

输出应为:

╠══════════╬════════════════════════════╣
║ 1        ║ Executive, Corp Admin, Art ║
║ 2        ║ Art, Marketing             ║
╚══════════╩════════════════════════════╝

我知道数据库应该规范化,但是我不能更改此项目的数据库结构。

这将用于使用以下代码导出excel文件。

"Created For", 'Company' => "Company", 'Case ID' => "Case ID", 'Created On' => "Created On", 'Created By' => "Created By", 'Description' => "Description" ); // display field/column names as first row echo implode("\t", array_keys($colnames)) . "\r\n"; $flag = true; } $row['createdOn'] = date('m-d-Y | g:i a', strtotime($row['createdOn'])); array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\r\n"; } exit; ?> 此代码仅输出“ forDepts”的第一个值

考试:执行人员(而不是执行人员,公司行政人员,Art)

可以通过CONCAT或FIND_IN_SET完成吗?

请帮忙!提前致谢!

展开
收起
保持可爱mmm 2020-05-17 10:03:33 487 0
1 条回答
写回答
取消 提交回答
  • SELECT a.nid, GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName FROM Notes a INNER JOIN Positions b ON FIND_IN_SET(b.id, a.forDepts) > 0 GROUP BY a.nid来源:stack overflow

    2020-05-17 10:13:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像