我想做一个简单的选择 - 但条件对我来说有点棘手(因为我是 SQL 初学者)。
我得到了这张表:
userid | email | newsletters
1 | test@example.com | 1,2
2 | test2@example.com | 1
现在我想获取所有想要获取时事通讯“2”的用户的电子邮件地址。
这将是:
email | newsletters
test@example.com | 1,2
当然:在另一个查询中,订阅第 1 期时事通讯的所有用户:
结果:
email | newsletters
test@example.com | 1,2
test2@example.com | 1
什么是正确的 sql 查询? 我认为这应该是正确的开始,但我不知道我必须使用哪个条件:
SELECT email FROM users WHERE newsletter CONDITION?
你能帮帮我吗? :-)
最佳答案
假设时事通讯的数量不能高于 9
,这将完成工作:
SELECT email FROM users WHERE newsletters LIKE '%2%'
如果您想要更多,那么表规范化会很有帮助。
编辑: 评论中的@sgeddes 提出了让它适用于任意数量的时事通讯的好建议:
SELECT email FROM users WHERE concat(',',newsletters,',') LIKE '%,2,%'
关于MySQL SELECT 电子邮件,其中字段包含一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30126545/