例: a表 aid int 关键字
flag bit 默认为0
b表 bid int 关键字 与a中的aid 相关联
name varchar(4)
a: aid flag 当flag 为1 时,b表中bid跟a表aid相同时,b表中记录就可以有两个,
001 0 当flag为 0时,b中只能有一个.
002 1
003 1
004 0
b: bid name
001 lsx
002 pp
002 uu
003 kk
现在我想查询a表中在b表中没有对应的记录.不过要判断当flag=1时是否b表刚好有两个,如果只有一个也要查出a表中,如以上例子按要求可以查出结果:
a 表:
aid flag
003 1
004 0
像以上的结果能不能通过SQL语句实现吗?请高手指点!
flag bit 默认为0
b表 bid int 关键字 与a中的aid 相关联
name varchar(4)
a: aid flag 当flag 为1 时,b表中bid跟a表aid相同时,b表中记录就可以有两个,
001 0 当flag为 0时,b中只能有一个.
002 1
003 1
004 0
b: bid name
001 lsx
002 pp
002 uu
003 kk
现在我想查询a表中在b表中没有对应的记录.不过要判断当flag=1时是否b表刚好有两个,如果只有一个也要查出a表中,如以上例子按要求可以查出结果:
a 表:
aid flag
003 1
004 0
像以上的结果能不能通过SQL语句实现吗?请高手指点!
解决方案 »
- 求用Delphi编写的多种图片格式转换源码
- wwDBGrid退出某一单元格后的计算问题
- 怎样让客户端发到服务器的数据及时的在表单上显示出来
- Midas TSocketConnection 三层 当网络断时的问题
- 求“网络实名”的详细实现方法,有源码者另行加分
- 请教个 问题 IdUdpserver 怎么会莫名其妙跑飞掉? 有谁碰到过类似得问题吗?
- 和网页有关的问题?
- 送分100分:关于TYPE的几个问题。
- 再问sql大难度, 挑战sql高手
- 我把paradox数据库引擎BDE改为ODBC,用户名和密码是什么?
- 如何读取jpeg的大小和颜色等信息?
- 我用Delphi编程来读取OutLook的Email时,会出现OutLook的提示窗口,如何屏蔽掉这个窗口
------------------------------
你B表的bid是关键字 怎么有两个记录?
你最后的结果好象跟“不过要判断当flag=1时是否b表刚好有两个,如果只有一个也要查出a表中”没什么关系?
where (flag = 0 and bid is null)
or (flag = 1 and (select count(*) from b where bid = aid)=2)
select distinct aid, flag from a left join b on aid= bid
where (flag = 0 and bid is null)
or (flag = 1 and (select count(*) from b where bid = aid)=1)