我有这样的查询:
——员工ID 5的专业化是什么?
SELECT EmpName
FROM Employee
WHERE Employee.ID IN(
SELECT Specialization
FROM Specialization
WHERE spe_mng_id = 5);
当我运行这个命令时,它返回给我这个错误消息:将varchar值"Assistant"转换为数据类型int时,转换失败。">
我的记录在varchar:
专业化——表
create table Specialization(
spe_id int,
Specialization varchar(50),
spe_mng_id int IDENTITY(1,1),
FOREIGN KEY(spe_mng_id) REFERENCES Employee(ID)
);
我不明白发生了什么,我也很新的SQL,所以很难找到答案,为我的确切问题,因此问社区!
我希望得到ID为5的员工专门化的返回值。
ID和spe_mng_id链接。
当您运行SELECT Specialization FROM Specialization WHERE spe_mng_id = 5
时,您已经获得了员工n5的所有专门化(可能只有一个)的列表。如果这是唯一需要的信息(就像不需要Employee表中的任何信息一样),您甚至可以直接运行这个查询。
但是,如果您还需要获得EmpName作为输出(或表Employee中的任何其他信息),则需要使用join命令连接两个表,使用spe_mng_id是表Employee中ID的引用(通过FOREIGN KEY定义可以看到)的信息。
类似:
SELECT EmpName, Specialization
FROM Employee
JOIN Specialization ON Employee.ID = Specialization.spe_mng_id
WHERE Employee.ID = 5
发生转换问题是因为您试图查找其Employee。ID (INT)在Employee n5的专门化列表(VARCHAR的一列)中。