2016-09-07 242 views
0
SELECT 
    tMI.MI 
FROM 
    tMI 
LEFT JOIN 
    tCard ON tCard.CardNumber = tMI.MI 
INNER JOIN 
    TMIN on TMIN.T_ID = tMI.MI 
WHERE 
    tCard.CardNumber IS NULL 
    AND tMI.MI IS NOT NULL 

我正在运行上面的代码,并且没有内部联接,它运行良好。但是一旦我添加了内部连接,它就会说它不能转换。将varchar值“”....“'转换为数据类型int时转换失败

数据是相同的减号,也许在表格中这里和那里有一些额外的。

任何想法如何解决这个错误?

+0

您应该发布您的表格结构,样本数据和预期结果。原因是,你的错误表明't_id'和'mi'是不同的数据类型(你不能简单地加入'int'和'varchar')... – sgeddes

+0

检查列TMIN.T_ID和tMI.MI的数据类型。最有可能的其中之一是varchar(tMI.MI),其他是int(TMIN.T_ID)。我建议,铸造或转换其中一个比较。 – Nagahornbill

回答

1

我觉得你的两个表列的数据类型不同,所以你使用以下 在SQL函数一样

SELECT 
    cast(tMI.MI as varchar) as MI 
FROM 
    tMI 
LEFT JOIN 
    tCard ON tCard.CardNumber = tMI.MI 
INNER JOIN 
    TMIN on TMIN.T_ID = tMI.MI 
WHERE 
    tCard.CardNumber IS NULL 
    AND tMI.MI IS NOT NULL 
1

检查您的ON条件中提到的所有列都是相同的数据类型。

如果要将CardNumber存储为varchar(实际上它是integer的值),并将Mi作为整数,请尝试修改如下的条件。

ON CAST (tCard.CardNumber as INT) = tMI.MI 
相关问题