php - 在 MySQL 中存储多个 ID 以查询大型结果集的最佳方法

标签 php mysql

我想保存客户订阅的电子邮件列表。我可能有:

电子邮件列表:

ID    Name
1     Coupons
2     Monthly Newsletter
3     Company News

现在,用户可以订阅任意数量的列表。假设我有三个用户:

用户:

ID    Name    Lists
1     Bob     1,3
2     Jane    2,3
3     Tom     1

现在我需要查询以获取所有订阅列表 #1 的用户 ID:

SELECT ID FROM users WHERE Lists LIKE '%1%'

是否有更好的方法来存储每个用户的列表 ID,以便更有效地执行查询?

最佳答案

第三个表 subscrib 在这里最好:

UserId    ListId
1         1      // Bob, Coupons
1         3      // Bob, Company news
2         2      // Jane, Monthly Newsletter
2         3      // Jane, Company news
3         1      // Tom, Coupons

然后您的查询将类似于(公司新闻):

SELECT UserId FROM subscrib WHERE ListId = '3';

或者

SELECT s.ListId, u.Email, u.Name FROM subscrib s
LEFT OUTER JOIN users u ON u.ID = s.UserId
WHERE s.ListId = '3';

关于php - 在 MySQL 中存储多个 ID 以查询大型结果集的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32917712/

相关文章:

php - 如何在php/mysql中高效加载相关对象?

PHP MVC 不同的样式表,每个页面上的 javascript 文件

php - 在 CakePHP 中一次存储多行

PHP PDO 驱动程序

MySQL BETWEEN 未按预期工作

java - 如何将 Java 中的 150 位整数(或 30 个 5 位整数)转换为 mysql 中的高效存储格式?

php - 安装libsodium到wampserver报错功能不存在

php - 邮件 PHP 是如何工作的?

php - 用户输入php sql保护

php - 尝试显示随机选择的 id 中的 mySQL 数据