从逗号分隔的字段中选择

时间:2010-12-23 09:24:40

标签: mysql select

假设我有一个subscribers表,每个用户都有一行像这样..

id name    subscribers
1  user1   user2,user3,user4
2  user2   user4,user5,user3
3  user3   user1,user6,user2    etc...

我想要做的是,运行像这样的选择语句..

 SELECT subscribers from table where id = '1'

..然后,限制向我展示的订阅者数量 即如果我将其限制为2,则只有SELECT "user2,user3"

table.subscribers WHERE id=1

我知道我可以用PHP选择所有内容后限制它但我不想遇到性能问题,如果每列中有数百万个用户名......

此外,这是设置subscibe/follow系统的最佳结构吗?还是有更好的方法?

2 个答案:

答案 0 :(得分:7)

您在同一字段中存储多个值。这很糟糕!

您需要第二个表来表示订阅 - 它会有一个列useridsubscriberuserid(或类似的东西)。

对于用户拥有的每个订阅者,此表中将记录该用户的用户ID(以及其订阅者的用户ID)。

然后,你可以限制你的心灵内容:

SELECT subscribers.subscriberuserid
FROM subscribers
WHERE userid = 1
LIMIT 2

答案 1 :(得分:0)

我认为多对多关系会更方便,你可以轻松限制你的记录数......