MySQL JOIN 连接时,条件为以逗号分隔的字段与 ID 相匹配
2024-09-03 12:52:14
一、背景
有一张相片表,一张相片所属标签表,一张相片可以归属于多个标签,表结构如下:
现在需要通过一次查询,得到每一张照片对应的标签名称,标签名称之间以固定的分隔符连接,结果如下图:
二、查询语句
原生 Mysql 语句
SELECT
think_img.id,
think_img.NAME,
think_img.label_id,
GROUP_CONCAT( think_img_label.NAME SEPARATOR " - " ) AS labelName,
think_img.update_time,
think_img.create_time
FROM
`think_img`
LEFT JOIN `think_img_label` ON FIND_IN_SET( think_img_label.id, think_img.label_id )
GROUP BY
`think_img`.`id`
ORDER BY
`think_img`.`sort`
LIMIT 0,10;
TP5 查询语句
Db::table('think_img')->field('think_img.*,GROUP_CONCAT( think_img_label.name separator " - " ) as labelName')
->join('think_img_label', 'FIND_IN_SET( think_img_label.id,think_img.label_id )', 'left')
->group('think_img.id')
->order('think_img.sort')
->select();
三、关键函数用法
FIND_IN_SET(str,strList)
- str 要查询的字符串
- strList 字段名,参数以“,”分隔,如(1,2,6,8)
- 查询字段(strList)中包含的结果,返回结果null或记录。
GROUP_CONCAT([DISTINCT] expr,[ORDER BY ASC/DESC col_name],[SEPARATOR str_val])
- [DISTINCT] expr 要连接的字段
- [ORDER BY col_name] 排序字段
- [SEPARATOR str_val] 分隔符
最新文章
- JS&;CSS文件请求合并及压缩处理研究(五)
- JDK7学习笔记之基础类型
- 新手学JavaScript都要学什么?
- 黑盒测试与白盒测试(Black box Testing)
- Lucas的数论(math)
- 【风马一族_Android】Android学习
- 黑马程序员—C语言的特点和关键字
- ssh别名登录密钥登录
- python 3.7 配置mysql数据库
- JAVA并发包学习
- sqlserver全文检索
- web应用与web框架
- vue 自动识别PC、移动端,并跳转到对应页面
- android 代码混淆示例
- 2: Eclipse反编译工具Jad及插件JadClipse配置
- 【leeetcode】125-Valid Palindrome
- LeetCode——4. Median of Two Sorted Arrays
- python 大量使用json 存储数据时,格式化输出的方式
- 06-01 Java 二维数组格式、二维数组内存图解、二维数组操作
- HDU 4436 str2int (后缀自动机SAM,多串建立)