我有两个表都有id列,但TableA.id是char,TableB.id是int。现在我想加入两个表,但问题是A.id中有一些字符串无法转换为int。这是我写的查询
SELECT
case
when Column1 is null
then (select Surname from TableB
where TableA.id = TableB.id
)
else Column1
end
FROM TableA
GO
子选择查询返回一堆记录,所以我的问题是,是否可以使用当前的TableB.id运行该子查询?我不确定我是否清楚地解释了这一点,子查询如何获得主查询的TableB.id值。感谢
答案 0 :(得分:0)
有一项功能可以做到这一点。它被称为Correlated Subquery,虽然我不确定它们是否在案例陈述中起作用。
答案 1 :(得分:0)
我不确定我是否关注过您,但问题的关键在于您尝试加入ID,但它们是不同的字段类型。也许是这样的事情:
SELECT
COALESCE(TableA.Column1, TableB.Surname)
FROM
TableA
LEFT OUTER JOIN TableB On
TableA.ID = Cast(TableB.ID AS Char(64))
我只是猜测CHAR的大小,但我认为这很充足。此外,我不确定你正在使用什么数据库,因此语法可能需要稍微调整一下。