mysql - 从同一个表中选择两个不同的值(mysql)

标签 mysql

我正在做一个小论坛。我想要的是在列出论坛主题时,显示主题创建者和最后回复者的用户名和头像。

当前查询(目前只查找主题创建者的头像+用户名)为:

SELECT 
    forum_topics.primkey,
    forum_topics.title,
    forum_topics.creatorid, 
    forum_topics.last_reply_poster, 
    users.username,
    users.avatar,
    forum_tracks.lastmark 
FROM 
    users,
    forum_topics 
    LEFT JOIN forum_tracks 
        ON forum_tracks.userid='".$_SESSION['loggeduserkey']."' 
        AND forum_tracks.topic_id=forum_topics.primkey 
WHERE 
    forum_topics.cat_id='".$forum_id."' 
    AND users.userkey=forum_topics.creatorid 
ORDER BY ...;

那么,我如何修改上面的查询,以便同时找到 last_reply_poster(用户 ID)的用户名+头像?

谢谢!

最佳答案

你必须分两次加入用户表:

SELECT 
    forum_topics.primkey,
    forum_topics.title,
    forum_topics.creatorid, 
    forum_topics.last_reply_poster, 
    users.username,
    users.avatar,
    u2.username,
    u2.avatar,
    forum_tracks.lastmark 
FROM 
    users,
    users as u2,
    forum_topics 
    LEFT JOIN forum_tracks 
        ON forum_tracks.userid='".$_SESSION['loggeduserkey']."' 
        AND forum_tracks.topic_id=forum_topics.primkey 
WHERE 
    forum_topics.cat_id='".$forum_id."' 
    AND users.userkey=forum_topics.creatorid
    AND u2.userkey=forum_topics.last_reply_poster
ORDER BY ...;

关于mysql - 从同一个表中选择两个不同的值(mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6009403/

相关文章:

java - 在 MySQL InnoDB 中获取以下查询的锁

php - 使用 WHERE 子句检查记录是否接收不同的值

php - 在 php 中使用来自 2 个或更多组合的 SQL 查询显示记录

mysql - 如何使用数组创建 MySQL 查询?

mysql - 在什么情况下使用 MySQL 关键字 'one'?

php - 仅针对特定字段的删除查询问题

mysql - MYSQL错误代码: 1442?有什么解决办法吗

java - 在我的 Spring Hibernate 项目上获取 InvokingTargetException

mysql - Node-cron 如果 Node 应用程序重新启动

PHP/Mysql,比较两个 while 循环的值