mysql 查询某字段中以逗号分隔的字符串的包含查询和关联查询实现

wylc123 1年前 ⋅ 206 阅读

1、一个人员文件表结构和数据如下:

2、一个文件表,结构和数据如下:

需求一: 查询共同拥有file_id为3的用户

查询SQL:

select u.* from temp_user_file u  where FIND_IN_SET(3,u.file_id_str)

结果:

需求二:关联查询用户所有file文件的名称和URL

查询sql:

SELECT t.user_id, f.id AS file_id, f.file_name, f.file_url FROM temp_user_file  t
 
LEFT JOIN temp_file f ON FIND_IN_SET(f.id,t.file_id_str)

结果:

本人不建议在正式的大型项目中使用逗号分隔,存储数据,但往往有一些老项目或者遗留的表中存在类似的结构,如果实在不能新增表,只能扩展部分字段用以支持1对多关系,可参考。

注意:

FIND_IN_SET查询的字段只能为逗号 , 分隔,如果非逗号 , 分隔需要使用REPLACE函数替换”

SELECT 字段  FROM table where FIND_IN_SET('条件',REPLACE(字段,'字段分隔符','要替换的符号'))

相关文章推荐
  • 该目录下还没有内容!

全部评论: 0

    我有话说: