【问题标题】:MySQL join results of two unrelated queriesMySQL连接两个不相关查询的结果
【发布时间】:2017-10-29 04:32:40
【问题描述】:

我是一个新手 SQL-er,试图将两个不相关查询的结果连接到一个表中。我在 SO 中使用 JOIN、UNION、嵌套 SELECT 语句等查看了许多示例,但似乎没有一个有效。这是我的表格和相关列:

用户: 用户 ID |用户名

活动: 事件ID |用户 ID | user_ID_affected

情况是多人游戏。我要做的是根据发生的每个事件的用户 ID“查找”用户名。我可以根据事件中的事件从用户那里查找用户名,但不能同时从用户那里获取用户名。

这是我的两个单独工作的查询:

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;

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

事件ID |用户名 |用户名1 |用户 ID 受影响 |用户名受影响

有什么想法吗?

【问题讨论】:

  • both work individually ...您的第二个查询甚至不会运行。
  • 你是对的 Tim - 现在我找不到有效的查询 :( 但逻辑是相同的:从用户表中查找用户名,其中用户 ID 与该事件中的用户 ID 匹配。
  • 您能否向我们展示示例数据以及您的预期输出表?

标签: mysql join


【解决方案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;

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多