2

两张表:

employee
id name
1  steve
2  rob
3  bell

position     
position_id employee_id position
1           e1         manager
2           e2         seller
3           e3         director

问题是外键的格式与主键不同。如何使用 sql 查询获得结果?

name   position
steve  manager
rob    seller
bell   director
4

2 回答 2

4

你是说你employee_id在你的职位表中总是有一个前缀“e”吗?如果是这样,那么这应该使用CONCAT

select e.name, p.position
from employee e join position p
on p.employee_id = concat('e',e.id)

SQL 小提琴演示

于 2013-03-29T18:31:37.507 回答
0

CONCAT
函数将帮助您隐式转换您的数字 id 并在前面添加“e”以匹配您在职位表中的 employee_id。然后,您可以进行哈希联接以从两个表中获取结果。
SQL 小提琴演示


select E.name, 
       P.position
from Employee E 
inner join Positions P
    on P.employee_id = concat('e',E.id)
于 2013-03-29T18:53:49.967 回答