在存储过程中显示具有不同列的2个不同的选择查询

时间:2015-07-15 05:44:01

标签: mysql stored-procedures

select u_id AS user1 from user where u_id = 2;
select u.u_id AS user2 from user u INNER JOIN trip t ON u.u_id = t.u_id WHERE t.u_id2 = 2;

如何在存储过程中同时显示user1和user2?

1 个答案:

答案 0 :(得分:1)

您需要两次加入用户表,第二次加入trip.u_id2

SELECT u.u_id AS user1, u2.u_id as user2
FROM user u
   INNER JOIN trip t ON u.u_id = t.u_id 
   INNER JOIN user u2 ON t.u_id2 = u2.u_id
WHERE t.u_id2 = 2;

请注意,我已调整别名以匹配后缀。如果t.u_id2t.u_id可以为空,那么您应该使用LEFT联接替换。

Re:这是最佳

由于您的原始查询只引用了用户ID,因此根本不需要加入用户表:

SELECT t.u_id AS user1, t.u_id2 as user2
FROM trip t
WHERE t.u_id2 = 2;

但很明显,现在您仅限于用户的FOREIGN密钥,这对最终用户可能没用。