the*_*ney 5 mysql join denormalization
我想加入2个表,一个表有一个电子邮件字段,另一个表有逗号分隔的电子邮件列表.
这是场景:
Team
--------------
- team_id
- email_list (this is a comma separated email address)
Persons
--------------
- person_id
- email
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
SELECT team.* FROM team INNER JOIN persons ON trim(persons.email) IN (CONCAT('\'',REPLACE(REPLACE(team.email_list,' ',''),',','\',\''),'\''))
Run Code Online (Sandbox Code Playgroud)
但是IN子句中的字符串似乎就像这个"'email1','email2','email3'"
有什么想法让它发挥作用?
MySQL有一个内置函数,可以帮助逗号分隔列表:
SELECT . . .
FROM team t INNER JOIN persons p
ON FIND_IN_SET(p.email, t.email_list);
Run Code Online (Sandbox Code Playgroud)
但是你不会对性能感到满意,因为它无法使用索引进行优化.
另请参阅我的答案是否在数据库列中存储逗号分隔列表真的那么糟糕?