1、最好将GroupId存为 2 5 6 7 92、拆分字符串,用SQL+辅助表方法 示例: SELECT a.*, MID(MID(newa,b.id,LENGTH(newa)),2,LOCATE(',',MID(newa,b.id,LENGTH(newa)),2)-2) AS newb FROM ( SELECT *,CONCAT(',',articles,',') AS newa FROM `test`.tn) a,lsb2 b WHERE LENGTH(newa)>=b.id AND MID(newa,b.id,1)=',' AND LENGTH(MID(newa,b.id,LENGTH(newa)))>=2lsb2:字段ID,内容1-10000,效率不会太高
(UserId,FriendId,CreatedDateTime,....)
'A','B',...
(UserId,FriendId,GroupId)
'A','B',2
'A','B',5
'A','B',6
'A','B',7
'A','B',9
但考虑到一个人添加的好友是有限的,不会几百万,我个人估计平均一个人也就50-200好友,并且分组上所做的查询并不多。因此可以设计为
(UserId,FriendId,CreatedDateTime,....GroupId)
'A','B',.......,'2,5,6,7,9'至于分组的显示和查询则可以在程序中实现。
2
5
6
7
92、拆分字符串,用SQL+辅助表方法
示例:
SELECT a.*,
MID(MID(newa,b.id,LENGTH(newa)),2,LOCATE(',',MID(newa,b.id,LENGTH(newa)),2)-2) AS newb
FROM (
SELECT *,CONCAT(',',articles,',') AS newa FROM `test`.tn) a,lsb2 b
WHERE LENGTH(newa)>=b.id
AND MID(newa,b.id,1)=','
AND LENGTH(MID(newa,b.id,LENGTH(newa)))>=2lsb2:字段ID,内容1-10000,效率不会太高