我如何 select 没有任何匹配外键的行
How can i select rows that do not have any matching foreign keys
SELECT *
FROM dbo.MainTable mt
LEFT JOIN Lookup_Items msn ON mt.Item = msn.Item_ID
WHERE msn.Item_ID is NULL
我有上面的查询,我想用它来查找 "MainTable" 中没有匹配外键的所有行。
"MainTable" 中的列项目是 nvarchar(200) 数据类型,但 table Lookup_Items 中的列 Item_ID 是 int。
我遇到的问题是,如果 MainTable 中的一行没有匹配的外键,则 Item 列将包含字符串数据,并且上述查询将失败并显示错误消息
Conversion failed when converting the nvarchar value 'TestValue' to data type int.
我是否可以解决这个问题,以便查询可以成功执行,并且仍然给我所有没有匹配外键的行?
只需将整数转换为字符串即可:
SELECT *
FROM dbo.MainTable mt
LEFT JOIN Lookup_Items msn ON mt.Item = CAST(msn.Item_ID as NVARCHAR(200))
WHERE msn.Item_ID is NULL
这样,它们将作为相同的数据类型进行比较,不会引发错误。
您的问题属于 item_ID 类型。您应该将项目 ID 转换为 nvarchar:
SELECT *
FROM dbo.MainTable mt
LEFT JOIN Lookup_Items msn ON mt.Item = cast(msn.Item_ID as nvarchar(200))
WHERE msn.Item_ID is NULL
SELECT *
FROM dbo.MainTable mt
LEFT JOIN Lookup_Items msn ON mt.Item = msn.Item_ID
WHERE msn.Item_ID is NULL
我有上面的查询,我想用它来查找 "MainTable" 中没有匹配外键的所有行。
"MainTable" 中的列项目是 nvarchar(200) 数据类型,但 table Lookup_Items 中的列 Item_ID 是 int。
我遇到的问题是,如果 MainTable 中的一行没有匹配的外键,则 Item 列将包含字符串数据,并且上述查询将失败并显示错误消息
Conversion failed when converting the nvarchar value 'TestValue' to data type int.
我是否可以解决这个问题,以便查询可以成功执行,并且仍然给我所有没有匹配外键的行?
只需将整数转换为字符串即可:
SELECT *
FROM dbo.MainTable mt
LEFT JOIN Lookup_Items msn ON mt.Item = CAST(msn.Item_ID as NVARCHAR(200))
WHERE msn.Item_ID is NULL
这样,它们将作为相同的数据类型进行比较,不会引发错误。
您的问题属于 item_ID 类型。您应该将项目 ID 转换为 nvarchar:
SELECT *
FROM dbo.MainTable mt
LEFT JOIN Lookup_Items msn ON mt.Item = cast(msn.Item_ID as nvarchar(200))
WHERE msn.Item_ID is NULL