我有下表
友谊:
321
在id | friend_one | friend_two | status | date
1 | 1 | 2 | 2 | 10/06/2016
3 | 2 | 3 | 2 | 10/06/2016
4 | 2 | 4 | 2 | 10/06/2016
5 | 2 | 5 | 2 | 10/06/2016
6 | 4 | 5 | 2 | 10/06/2016
7 | 3 | 4 | 2 | 10/06/2016
8 | 3 | 7 | 2 | 10/06/2016
9 | 5 | 1 | 2 | 10/06/2016
10 | 6 | 4 | 2 | 10/06/2016
11 | 6 | 1 | 2 | 10/06/2016
表中,friendship
表示他们是朋友,status = 2
是发送好友请求的用户。
我想根据共同的朋友数量获得朋友的建议,也就是说,共同的朋友越多,被推荐给我的机会就越大(用户登录)。
为此,我想到了以下内容:
但是,我无法付诸实践。为了实现第一步,我开始考虑(记录的用户friend_one
为1):
id
所以我可以选择id为1的用户的所有朋友。
为了实现第二步,我做了:
SELECT
CASE WHEN a.friend_one = 1 THEN a.friend_two ELSE a.friend_one END AS myFriend
FROM friendship a
WHERE 1 IN(a.friend_one, a.friend_two) AND a.status = 2
所以,我收到了错误:
错误代码:1054。“字段列表”中的未知列'myFriend'
但是,我不知道如何继续。我认为的四个步骤是正确的?如果是这样,我如何“修复”错误并根据共同朋友的数量得到朋友的建议?
期望的结果: 4(3个共同的朋友),3(1个共同的朋友)
答案 0 :(得分:1)
您在第二步中将myFriend
别名建立为SELECT子句的第一列;您不能将该别名用作同一SELECT子句中其他列的源。您必须在其位置重复CASE语句。或者,您可以在子查询中计算myFriend
,并在某些位置按名称引用它。
这只是对您收到的错误消息的响应,而不是对完整算法的检查。