我有一个包含 4 列 id、用户、文本和日期的表。
我正在尝试获取“用户”包含许多用户 ID 之一的行。那里可以有一个到无穷大的用户 ID。
用户 ID 示例
"4, 5, 23"
“用户”列示例
"4, 12, 44"
基本上我正在尝试制作一个状态更新系统,只有用户的朋友才能看到状态更新,有点像 facebook 和 twitter。
您不应该有一个列来存储多个用户 ID。制作一个表格并参考它,然后查找将很简单。
如果我正确理解你的问题,你想把它分成多个表。
带有 id、userid、文本和日期的状态表。
带有 id、用户名等的用户表(由您决定)。
一个带有 id、userid、friendid 的友谊表。(友谊的两个条目,你可以做friend1和friend2,但这意味着每个查询都要检查两个字段)。
最后一张表是根据友谊的需要做的两种方式!因此,与 twitter 相对的 facebook 约定遵循但可能没有遵循的约定。
然后,您将显示您(作为登录用户)与之有友谊的用户的更新。
SELECT s.text, s.date, u.username, s.userid FROM status s INNER JOIN username u ON s.userid = u.id INNER JOIN Friendship f ON f.friendid = s.userid WHERE f.userid = 'LOGGED IN USER ID' ORDER BY s.date DESC LIMIT 10
将 LOGGED IN USER ID 更改为当前登录用户的用户 ID。这通常使用会话变量来设置。
将LIMIT 10
显示最新的 10 个状态更新!
然后显示文本和日期以及带有链接到其个人资料的用户 ID 的用户名(如果适用)!