我有一张桌子:
Visit (FromId, ToId, VisitTime)
其中fromid和toid是表的fks
UserProfile (uid, name, age ...)
作为一个使用我的uid的用户,我想选择我访问过的所有配置文件,或者在visittime命令的一个结果集中访问过我的人,并显示“访问方向”。
是否可以只使用一个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 Demo