mysql - MySQL 通过比较两个不同的标准从 2 个不同的表中获取结果
问题描述
又是我的奇怪问题。
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
(用户表)身份登录并希望从with中列出orders
表中的所有信息,并且这些信息被列为我的,此外我还希望我的结果中的名称。查询将在表上执行。users
type 3
partners (partner 2)
company
users
table
orders
result:
id | user | partner | company
------------------------------
1 | 2 | 2 | comp2
2 | 2 | 2 | comp2
4 | 3 | 2 | comp3
提前谢谢,如果你不明白这个问题,请问我。我会尽力解释得更好,也欢迎任何使之更清楚的编辑。
解决方案
也许这
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)
推荐阅读
- javascript - Javascript - 多个按钮的代码几乎相同,但结果却大不相同
- sql-server - SQL Server 查询最后值和平均值
- sql - T-SQL 使用另一个标量变量的值设置标量变量
- asp.net - IIS 返回 400 - 缺少内容错误
- html - 如何正确编写 CSS 属性选择器来提取所有 id 属性?
- sql - SQL:Postgres 语句转换递归连接时出现问题
- mysql - 内查询多列一库
- git - VSTS Git:repo 被 .gitignore 删除了。清理已经执行到 master,但新的 git clone 仍然下载超过 4000 个文件
- python - python pip被virtualenv破坏
- android - pocketsphinx android - 为每个不同的口语返回相同的单词