这样的SQL语句怎样写?(10分)

  • 主题发起人 主题发起人 touip
  • 开始时间 开始时间
T

touip

Unregistered / Unconfirmed
GUEST, unregistred user!
A表:
A1 A2
1 F
2 AS
3 BC
......
B表:
B1(对应A1) B2
1 WANG
1 LI
3 LI
......
假设我是LI(对应B2),那么我从A表选出:
A1 A2
2 AS

假设我是WANG(对应B2),那么我从A表选出:
A1 A2
2 AS
3 BC
 
select A.* from A where A.A1 not in (select B.B1 from B where B.B2='LI');
select A.* from A where A.A1 not in (select B.B1 from B where B.B2='WANG');
 
试试

SELECT *
FROM A
WHERE (A1 NOT IN
(SELECT b1
FROM B
WHERE B2 = 'li'))
 
select A.* from A where A.A1 not in (select B.B1 from B where B.B2=:name);
其中:name为一个parameter
 
不行,因为如果我要选出某个人(对应于B2)在B表中没有被记录的A表中的记录

应该是如果既不是WANG,又不是LI,则从A表中选出:
A1 A2
1 F
2 AS
3 BC
如果用以上语句是空集,我用过的,我不知道这样的语句有没办法写出来
是否要用到
CASE .....
ELSE.....
才能写出来?
 
如果只是要选出某个人(对应于B2)在B表中没有被记录的A表中的记录
其实只要如下:
select A.* from A WHERE A.A2 NOT IN (SELECT DISTINCT B.B2 FROM B)
 
我按你所提供的数据测试了zgdtxf的SQL语句,返回的并不是空集而是你所要求的结果呀
 
我可能忘了,我用的是Sybase
 
to touip:
我虽然不懂sybase,但是不管是用sql server还是sybase or access
or infomix or other,我认为sql语法不是相同就是雷同,只是各自
的sql扩展有一些差异。我相信sybase也会有类似的语句的。去看看书吧
 
我已经解决了,问题不在SQL语句这。只要在B表里加上
0 WANG
0 LI
0 ZHANG
。。。
谢谢各位回答我的问题。
 
多人接受答案了。
 

Similar threads

回复
0
查看
879
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
848
DelphiTeacher的专栏
D
后退
顶部