两个表的sql语句问题,红薯大哥帮忙看下

ghostdom 发布于 2012/02/23 19:51
阅读 478
收藏 2

有表A跟表B,A跟B都有字段link跟name,A跟B通过link关联,

B中有的link跟name  A表中必然有。

我现在想查出A表中的数据是B表里没有的,这个sql语句怎么写呢?

加载中
0
CrazyMole
CrazyMole
select a.link from a where a.link not exists (select b.link from b);
1
磊神Ray
磊神Ray
select a.link from a where a.link not in (select b.link from b);
sakuyasky
sakuyasky
not in 效率低下
1
mark35
mark35
(SELECT link FROM A) EXCEPT (SELECT a1.link FROM A AS a1 INNER JOIN B ON a1.link=B.link) 

OR

SELECT link FROM A EXCEPT SELECT link FROM B

超级奶爸老谭
超级奶爸老谭
SQL SERVER 正解!
0
sakuyasky
sakuyasky
select A.link,A.name from A left join B on A.link=B.link where isNull(B.link,'') = ''
0
sakuyasky
sakuyasky
我前面漏写了 应该是
select * from (select A.link,A.name,B.link as BLink from A left join B on A.link=B.link) C where isNull(C.BLink,'') = ''
用外联效率高
0
宏哥
宏哥

引用来自“mark35”的答案

(SELECT link FROM A) EXCEPT (SELECT a1.link FROM A AS a1 INNER JOIN B ON a1.link=B.link) 

OR

SELECT link FROM A EXCEPT SELECT link FROM B

哈哈,又用到了RDBMS了.

如果mysql就不能用这个查询了

mark35
mark35
标签写的是 SQL Server ~
0
ghostdom
ghostdom

不对啊  可能表达有点错误?我举个例子吧

表A的数据

id   link   name    。。其他字段

1    a    小王

2    a    小李

3    b    小王

4    b    小张

5    b    小明

 

B表的数据

id    link    name。。。其他字段

1    a    小王

2    b    小王

3    b    小明

 

我要的结果是A表里的第二跟第四条数据

0
wartskcaj
wartskcaj
SELECT * FROM A WHERE link NOT IN (SELECT link FROM B)  行不?
0
黄龍
黄龍
SELECT link,name FROM A EXCEPT SELECT link,name FROM B
0
ghostdom
ghostdom

引用来自“S-Mole”的答案

select a.link from a where a.link not exists (select b.link from b);

谢谢

返回顶部
顶部