将 varchar 值'Assistant'转换为数据类型 int 时转换失败.SQL 消息错误



我有这样的查询:

——员工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的一列)中。

相关内容

  • 没有找到相关文章

最新更新