Mysql 一个表上的内部联接但参数不同
我试图在一个表的行上获得不同的值,但我想不出如何实现这一点 比如说:Mysql 一个表上的内部联接但参数不同,mysql,Mysql,我试图在一个表的行上获得不同的值,但我想不出如何实现这一点 比如说: table1 id | name | empCode | insCode 1 John | E101 | I101 table2 id | code | name | role 1 | E101 | Mich | 2 2 | I101 | Bran | 3 表1具有表2的参考id,表1中的empCode和insCode依赖于表2中的code和ro
table1
id | name | empCode | insCode
1 John | E101 | I101
table2
id | code | name | role
1 | E101 | Mich | 2
2 | I101 | Bran | 3
表1具有表2的参考id
,表1中的empCode
和insCode
依赖于表2中的code
和role
我想要的是这样的:
id | code | name | empCode | insCode | role |
1 | ? | John | E101 | I101 | ? |
老实说,我不知道是否可以在一个select
query中检索同一个表中的多行。
如果不是,我还可以选择哪些其他可行的解决方案?尝试以下方法:
从中选择一个*,b.角色
表1 a内部联接表2 a.id=b.id上的b
也可以考虑从表2中移除代码和代码,因为它在表1中是冗余的,反之亦然,这取决于您的目标是什么。 从中选择一个*,b.角色 表1 a内部联接表2 a.id=b.id上的b
您也可以考虑从表2中移除代码和代码,因为它在表1中是冗余的,反之亦然,取决于您的目标是什么。
表设计中存在问题,但您可以按照以下查询得到预期:
select
result1.id,
result1.code,
result1.name,
result1.empCode,
result1.insCode,
result1.role as role_of_empCode,
result2.role as role_of_insCode
from (
SELECT tbl1.id,
tbl2.code,
tbl1.name,
tbl1.empCode,
tbl1.insCode,
tbl2.role
FROM `table2` tbl2
INNER JOIN `table1` tbl1
on tbl2.code = tbl1.empCode
) as result1,
`table2` result2
where result1.insCode = result2.code
ORDER BY result1.id;
! 您的表设计存在问题,但您可以通过以下查询获得预期结果:
select
result1.id,
result1.code,
result1.name,
result1.empCode,
result1.insCode,
result1.role as role_of_empCode,
result2.role as role_of_insCode
from (
SELECT tbl1.id,
tbl2.code,
tbl1.name,
tbl1.empCode,
tbl1.insCode,
tbl2.role
FROM `table2` tbl2
INNER JOIN `table1` tbl1
on tbl2.code = tbl1.empCode
) as result1,
`table2` result2
where result1.insCode = result2.code
ORDER BY result1.id;
! 我知道一些
内部连接
,但问题是我的表
设计,所以它无法按我想要的方式工作。所以,在这种情况下,我所做的是创建另一个查询来检索另一个行
,它工作了,但现在,它变成了两个查询,而不是一个查询。我想事情就是这样。不管怎样,谢谢你的回复。我知道一些内部连接
,但问题是我的表
设计,所以它无法按我想要的方式工作。所以,在这种情况下,我所做的是创建另一个查询来检索另一个行
,它工作了,但现在,它变成了两个查询,而不是一个查询。我想事情就是这样。谢谢你的回复。谢谢你的回复。在检查你提供的链接,这似乎是确切的可能的答案,我正在寻找。标记为回答的。非常感谢你的帮助和时间。谢谢,谢谢你的回答。在检查你提供的链接,这似乎是确切的可能的答案,我正在寻找。标记为回答的。非常感谢你的帮助和时间。非常感谢。