小编典典

MySQL WHERE问题,以逗号分隔的列表

sql

我需要这个问题的帮助。

在MYSQL表中,我有一个字段:

Field  : artist_list  
Values : 1,5,3,401

我需要找到艺术家uid 401的所有记录

我做这个

SELECT uid FROM tbl WHERE artist_list IN ('401');

我所有记录的artist_list字段值仅是“ 401”,但是如果我有11,401,则此查询不匹配。

任何的想法 ?

(我无法使用LIKE方法,因为如果艺术家uid为3(匹配30、33、3333)…


阅读 218

收藏
2021-05-05

共1个答案

小编典典

短期解决方案

使用FIND_IN_SET函数

SELECT uid 
  FROM tbl 
 WHERE FIND_IN_SET('401', artist_list) > 0

长期解决方案

标准化您的数据-这似乎是一个已经涉及两个表的多对多关系。逗号分隔的列表需要变成一个自己的表:

ARTIST_LIST

  • artist_id (primary key, foreign key to ARTIST)
  • uid (primary key, foreign key to TBL)
2021-05-05