我有一张桌子:
Visit (FromId, ToId, VisitTime)
其中FromId和ToId是FK到表
UserProfile (uid, name, age ...)
作为具有我的UID的用户,我想要选择我访问过的所有个人资料或者在访问时间点排序的一个结果集中访问我的所有个人资料以及"访问方向"的指示.
是否可以只使用一个MySQL查询来完成它?
SELECT CASE WHEN a.FromID = 'yourIDHere' THEN c.Name ELSE b.Name END Name, CASE WHEN a.FromID = 'yourIDHere' THEN c.Age ELSE b.Age END Age, a.VisitTime, CASE WHEN a.FromID = 'yourIDHere' THEN 'You' ELSE 'Friend' END DirectionOfVisit FROM Visit a INNER JOIN UserProfile b ON a.FromID = b.Uid INNER JOIN UserProfile c ON a.ToID = c.Uid WHERE 'yourIDHere' IN (a.FromID, a.ToID) ORDER BY a.VisitTime
简要说明:
查询将显示您访问过的朋友或访问过您的朋友的姓名,并显示访问的方向.显示时You
,表示您已访问过您朋友的个人资料,否则会显示Friend
该朋友是否已访问过您.
SQLFiddle演示