MySQL通过比较两个不同的条件从2个不同的表中获取结果

时间:2018-07-26 09:47:38

标签: mysql sql

我又是我的怪异查询。

table users:

id | type | partner | company
------------------------------
 1 |   2  |   0     | comp1
 2 |   3  |   2     | comp2
 3 |   3  |   2     | comp3
 4 |   3  |   3     | comp4

table orders:

id | user | partner
--------------------
 1 |  2   |   2
 2 |  2   |   2
 3 |  2   |   3
 4 |  3   |   2

我知道跟踪所有这些数字有点麻烦。 我以type 2(用户表)的身份登录,想从orders中以users列出type 3表中的所有信息,这些信息列为我的{ {1}}另外,我还希望在结果中同时使用partners (partner 2) company中的users名称。 该查询将在table表上执行。

orders

请先谢谢您的理解,然后再问我。我会尽力解释得更好,也欢迎您进行任何使其更清晰的修改。

1 个答案:

答案 0 :(得分:-1)

也许这

select s.id,
        case when src = 'u' then s.users
        else s.partner
        end as users,
        case when src = 'p' then s.users
        else s.partner
        end as partner,
        u.company
    from
   (
   select 'u' as src,id,users,partner from o where users = 2 and (users = partner)
   union
    select 'p',id,partner,users from o where partner = 2 and (users <> partner)
    ) s
    join u on u.id = s.partner
    where type = 3;

希望是自我解释,请注意,我只需要了解用户,查询就可以确定合作伙伴。

结果

+------+-------+---------+---------+
| id   | users | partner | company |
+------+-------+---------+---------+
|    2 |     2 |       2 | comp2   |
|    1 |     2 |       2 | comp2   |
|    4 |     3 |       2 | comp3   |
+------+-------+---------+---------+
3 rows in set (0.00 sec)