MySQL连接两个不相关查询的结果
Posted
技术标签:
【中文标题】MySQL连接两个不相关查询的结果【英文标题】:MySQL join results of two unrelated queries 【发布时间】: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 匹配。
您能否向我们展示示例数据以及您的预期输出表?
【参考方案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;
【讨论】:
以上是关于MySQL连接两个不相关查询的结果的主要内容,如果未能解决你的问题,请参考以下文章