我想保存客户订阅的电子邮件列表。我可能有:
电子邮件列表:
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/