需要两个选择吗?

 Edgar__一峰 发布于 2023-02-13 16:08

我有一张桌子:

Visit (FromId, ToId, VisitTime)

其中FromId和ToId是FK到表

UserProfile (uid, name, age ...)

作为具有我的UID的用户,我想要选择我访问过的所有个人资料或者在访问时间点排序的一个结果集中访问我的所有个人资料以及"访问方向"的指示.

是否可以只使用一个MySQL查询来完成它?

1 个回答
  • 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演示

    2023-02-13 16:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有