MySQL SELECT 电子邮件,其中字段包含一个值

标签 mysql sql conditional-statements

我想做一个简单的选择 - 但条件对我来说有点棘手(因为我是 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/

相关文章:

PHP 没有看到 mysql 扩展

mysql - 选择最短和最长的字符串

sql - 多模式选择语句在 PL/SQL 过程中不起作用?

超过一定数量的元素后,MySQL(NOT IN)条件无法正确返回

matlab - Matlab 有 AndAlso 等效项吗?

多个表的 MySQL 内存使用情况

php - 在 MATCH 之后添加 2 行时,全文查询将不起作用

php - 查询 MySQL 表,存储在 PHP 数组中,然后从数组中返回单个值

iphone - 仅当页码为零时隐藏上一个按钮,仅当页码为 20 时隐藏下一个按钮

java - 线程 "main"中的异常 org.hibernate.HibernateException : Error accessing stax stream