这可能看起来很奇怪,但我想知道是否有可能让 MySQL 表有一个可以包含值列表的列。例如,假设我有一个代表像 facebook 这样的朋友列表的表格,我如何在表格中模拟它?我认为您可以将用户名添加到属性列中,但不确定这是最好的主意,甚至不确定如何做到这一点。关于如何实现这一目标或替代方案的任何建议?
问问题
216 次
3 回答
1
因此,与 facebook 示例保持一致,您正在寻找的是有一个包含两列的表格。第一个,标识用户,第二个是该用户的朋友列表?
据我所知,您不能将列视为数组。您可以有一个字符串,其中包含用破折号分隔的所有个人名称,但这并不可靠。
我的建议是有一个有两列的朋友表,这两列都是 varchars 或字符串。每列仅包含 1 个人的姓名或 id,表示这两个人之间的友谊。
然后,如果您想要 foobar 的朋友列表,您只需查询:
SELECT *
FROM friends
WHERE user_a == 'foobar' || user_b == 'foobar'
现在,这实际上会为您提供两列,其中之一是 foobar,其中之一是他/她的朋友。因此,您可能需要有一点创意才能将其分成 foobar 的朋友,但我相信您可以找到一种适用于您的代码的方法。
于 2012-10-14T03:23:37.010 回答
1
虽然这通常不是一个好主意,但 MySQL 确实有这个:
FIND_IN_SET('b','a,b,c,d')
SELECT ... FROM friends WHERE FIND_IN_SET('foo',friends_list) > 0;
所以你可以很容易地做你所要求的。只是通常不建议这样做。
于 2012-10-14T04:04:51.990 回答