mysql - 从逗号分隔的字段中选择

标签 mysql select

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

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

我想做的是,像这样运行一个 select 语句。

 SELECT subscribers from table where id = '1'

..然后,限制向我展示的订阅者数量 即,如果我将它限制为 2,它只会从 table.subscribers WHERE id=1

SELECT "user2,user3"

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

此外,这是设置订阅/关注 系统的最佳结构。还是有更好的方法?

最佳答案

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

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

对于用户拥有的每个订阅者,此表中都会有一条记录,其中包含该用户的用户 ID(及其订阅者的用户 ID)。

然后,您可以限制自己的内心满足:

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

关于mysql - 从逗号分隔的字段中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4517379/

相关文章:

javascript - 如何从 iframe 中获取选定的文本(在 IE 上工作)

mysql - 如何在一个数据库请求中计算不同的 mysql 行?

mysql - 如何统计连接表记录

sql - 在mysql中执行计算

php - 如何选择产品并按折扣 DESC 排序(PHP、Mysql)

postgresql - 在 Postgres 中使用限制选择更新

MySQL - 组中的条件选择

MySQL Inner Join 两个表上第二个表的最大值

mysql - 将最后 N 条消息存储到数据库的方法,其中旧消息将被自动删除

Mysql查询用于在多个条件和列上从一个表插入另一个表