MySQL加入两个不相关查询的结果

时间:2017-10-29 04:32:41

标签: mysql join

我是一个新手SQL-er试图将两个不相关的查询的结果加入到表中。我使用JOIN,UNION,嵌套的SELECT语句等在SO中查看了很多示例,但似乎都没有。以下是我的表格和相关专栏:

用户: user_ID |用户名

活动: event_ID | user_ID | user_ID_affected

情况是多人游戏。我想要做的是根据发生的每个事件的用户ID“查找”用户名。我可以根据事件中的事件查看用户的用户名,但不能同时查看来自用户的usernameAffected。

以下是我的查询,它们都可以单独运作:

SELECT Events.event_ID AS eventID, Events.user_ID AS userID, Users.username
AS username1, Events.user_ID_affected AS userIDAffected
FROM Events
LEFT JOIN Users ON Events.user_ID = Users.user_ID
WHERE Events.event_ID > 11337
ORDER BY Events.event_ID ASC;

SELECT Users.username AS usernameAffected
FROM Users
WHERE Users.user_ID = Events.user_ID_affected;

但是尽可能地尝试我无法将它们结合起来。我希望输出的结果是这样的列:

eventID | userID | username1 | userIDaffected | usernameAffected

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为您在这里需要的是两次加入Users表,一次是针对行动的用户,另一次是接收该行动的用户:

SELECT
    e.event_ID AS eventID,
    e.user_ID AS userID,
    u1.username AS username,
    e.user_ID_affected AS userID_affected,
    u2.username AS username_affected
FROM Events e
LEFT JOIN Users u1
    ON e.user_ID = u1.user_ID
LEFT JOIN Users u2
    ON e.user_ID_affected = u2.user_ID
WHERE
    e.event_ID > 11337
ORDER BY
    e.event_ID ASC;