在我的MySQL数据库中,有一个名为friend_array的数组列(text类型),其中变量usernames用逗号(,)分隔
例如:单元格中的user1 friend_array值为:
prevert,
borges,
eliot,
wislawa,
derek,
hebert,
pushkin,
plath,
donnelly,
ahlberg,
ginsberg,
amiri,
rilke,
mckay,
aam,
wowen,
larkin,
michaux,
moliver,
dickinson,
rumi,
reverdy,
brecht,
tate,
cad,
cummings,
dianeb,
sexton,
redson,
pessoa,
transtromer,
shakespeare,
mistral,
sodergran,
bukowski,
auden,
tedhu,
ashton,
tomandrews,
gwallas,
updike,
ashbery,
jenkins,
rhass,
whitehead,
montale,
ritvo,
snyder,
kooser,
simic,
koertge,
nemerov,
aporter,
reichhold,
rduncan,
meretop,
kkoch,
strand,
kahf,
asha,
keats,
pinter,
santoka,
opaz,
breton,
schreiner,
bataille,
cedo,
galeano现在如何在php中分别选择每个朋友,以便查看朋友列表而不重复
提前感谢
发布于 2019-05-07 15:40:05
您应该创建一个新的表friend,如下所示:
friend
===============
id_user | username在id_user1 + username上有一个primary key,通过这种方式获得你的user1的所有朋友,你可以只做SELECT username FROM friend WHERE id_user = :id_user1;。正如评论中所说,让这种字段包含一个包含多个需要选择的值的字符串,这是非常糟糕的做法。
现在来回答这个问题,如果您设法获得了friend_array值(正如您所说的那样,包含多个用户名的字符串,用逗号分隔),您可以这样做:
$data = explode(',', $your_friend_array_string);如果要删除重复项:
$data_unique = array_unique($data);希望它能有所帮助,但如果可能的话,从改变你存储数据的方式开始吧!
发布于 2019-05-07 15:42:17
虽然我绝对同意你应该绝对努力设置op关系和使用规范化(即:创建一个朋友表)。问题是,这是否可能在不进行重复查询的情况下实现。
它是这样的:
SELECT
a.name,
b.name
FROM user a
LEFT JOIN user b ON FIND_IN_SET(b.name, a.friends)
WHERE
a.name = 'name';它并不美观,如果你有任何方法来编辑数据库结构,你应该这样做,并放弃这个“解决方案”。
https://stackoverflow.com/questions/56017154
复制相似问题