[英]MySQL/SQL. Combine two select statement in two columns
我需要有关SQL查询的帮助。 我有两个单独的SELECT查询:
SELECT
tbl_events.eventName as eventName1
FROM tbl_events
INNER JOIN tbl_users
ON tbl_events.eventAutorID = tbl_users.userID
WHERE tbl_users.userID = "6";
Output:
eventName1:
eventNametest1
eventNametest2
eventNametest3
eventNametest9
和
SELECT
tbl_events.eventName as eventName2
FROM tbl_users
INNER JOIN tbl_participants
ON tbl_users.userID = tbl_participants.participantUser
INNER JOIN tbl_events
ON tbl_participants.participantEvent = tbl_events.eventID
WHERE tbl_users.userID = "6";
Output:
eventName2:
eventNametest1
eventNametest3
eventNametest6
eventNametest12
eventNametest15
eventNametest16
第一个查询是选择具有特定ID(例如ID = 6)的用户创建的所有事件(名称),第二个查询是获取将具有特定ID的用户添加为参与者的所有事件(事件名称)。 如何将这些语句合并为一个,但将结果分为两个不同的列? 输出应如下所示:
eventName1 | eventName2
eventNametest1 eventNametest1
eventNametest2 eventNametest3
eventNametest3 eventNametest6
eventNametest9 eventNametest12
NULL eventNametest15
NULL eventNametest16
MySQL不提供FULL JOIN
。 而且,如果有人可以授权某个活动但不参加,那么您就需要它。
一种方法使用UNION ALL
和变量:
SELECT MAX(authName) as authName, MAX(partName) as partName
FROM ((SELECT e.eventName as authName, NULL as partName, (@rne := @rne + 1) as rn
FROM tbl_events e JOIN
tbl_users u
ON e.eventAutorID = u.userID CROSS JOIN
(SELECT @rna := 0) params
WHERE u.userID = 6
ORDER BY eventName
) UNION ALL
(SELECT NULL, e.eventName, (@rnp := @rnp + 1) as rn
FROM tbl_participants p JOIN
tbl_events e
ON e.eventId = p.participantEvent CROSS JOIN
(SELECT @rnp := 0) params
WHERE p.participantUser = 6
ORDER BY e.eventName
)
) ap
GROUP BY rn;
您只需使用联合引用: https : //dev.mysql.com/doc/refman/5.7/en/union.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.