使用不同格式的主键和外键连接两个表

时间:2013-03-29 18:26:56

标签: mysql sql foreign-keys primary-key

两张桌子:

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

2 个答案:

答案 0 :(得分: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 Fiddle Demo

答案 1 :(得分:0)

CONCAT
函数会帮助您隐式转换数字ID并在前面添加“e”以匹配位置表中的employee_id。然后你可以进行散列连接以从两个表中获得结果 的 SQL FIDDLE DEMO


select E.name, 
       P.position
from Employee E 
inner join Positions P
    on P.employee_id = concat('e',E.id)