可能重复: SQL -从一个表中查找另一个表中不存在的记录
我有这张桌子
TableA
uID | uData
1 | 111
2 | 222
3 | 333
4 | 444
5 | 555
Table B
uID | uData2
1 | 222
2 | 444我只想从TableA获取数据,而不是从TableB获取数据
输出:
uID | uData
1 | 111
3 | 333
5 | 555 到目前为止,我做了这个解决方案
DECLARE allData CURSOR FOR
SELECT uData
FROM TableA;
OPEN allData;
FETCH NEXT FROM allData;
print @allData;
--WHILE @@allData = '222'
-- BEGIN
-- FETCH NEXT FROM allData;
-- END
CLOSE allData;
DEALLOCATE allData;
GO得到了这个错误
必须声明标量变量"@allData“。
在sql或任何其他解决方案中不使用while,还有其他方法吗?:)
发布于 2011-10-26 07:04:40
尝尝这个
SELECT *
FROM TableA
WHERE uData NOT IN (
SELECT uData2
FROM TableB
)发布于 2011-10-26 07:04:18
只需使用左联接并筛选出第二个表中有数据的记录:
select t1.uID, t1.uData
from TableA t1
left join TableB t2 on t2.uData2 = t1.uData
where t2.uData2 is null发布于 2011-10-26 07:02:42
不需要游标;只需使用以下方法从TableB中排除值:
select tableA.*
from tableA
where tableA.uData not in (select TableB.uData2 from TableB)此外,您的CURSOR语法是错误的。查看这个快速的例子以获得适当的CURSOR语法,以供以后参考。
https://stackoverflow.com/questions/7899540
复制相似问题