高分求一句sql同时实现下面两个需求?在线等

lybjust 2011-12-03 12:19:35
数据库表中可能会存在有如下两条数据:

FIndex FID FChangeID FCloseFlag
1 100 150 0
2 100 0 0

或者

FIndex FID FChangeID FCloseFlag
1 100 150 0
2 100 0 1


整体来看,就是两条数据的FCloseFlag和FChangeID不一样而已
现在要求写一条sql语句,同时满足需求:
1、当存在FCloseFlag=1的时候,只查询出FIndex=1的数据行
2、当存在FClaseFlag=0的时候,只查询出FIndex=2的数据行
...全文
76 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lybjust 2011-12-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acherat 的回复:]

SQL code

select *
from tb
where (FClostFlag = 1 and FIndex = 1) or (FCloseFlag = 0 and FIndex = 2)
[/Quote]

请不要把FIndex考虑进去,这里FIndex可能是一个自增主键而已

而且试了这个,好像没有效果
lybjust 2011-12-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qianjin036a 的回复:]

如果从楼主的叙述上看,并未排除 FClostFlag 不为 0 和 1 的状态.
SQL code
SELECT * FROM TB WHERE FClostFlag=1 and FIndex=1 or FClaseFlag=0 and FIndex=2 or FCloseFlag<>1 and FCloseFlag<>0
[/Quote]

请不要把FIndex考虑进去,这里FIndex可能是一个自增主键而已,只是为了说明取第几行数据才描述了
FIndex,谢谢哈


-晴天 2011-12-03
  • 打赏
  • 举报
回复
与操作优先级高于或操作,不用括号.
-晴天 2011-12-03
  • 打赏
  • 举报
回复
如果从楼主的叙述上看,并未排除 FClostFlag 不为 0 和 1 的状态.
SELECT * FROM TB WHERE FClostFlag=1 and FIndex=1 or FClaseFlag=0 and FIndex=2 or FCloseFlag<>1 and FCloseFlag<>0
AcHerat 2011-12-03
  • 打赏
  • 举报
回复
或者分别求出来结果集union all
AcHerat 2011-12-03
  • 打赏
  • 举报
回复

select *
from tb
where (FClostFlag = 1 and FIndex = 1) or (FCloseFlag = 0 and FIndex = 2)
快溜 2011-12-03
  • 打赏
  • 举报
回复
select distinct b.* from tb a
cross apply(select top 1 * from tb where FID=a.FID order by FCloseFlag desc,FIndex desc) b
yudiw 2011-12-03
  • 打赏
  • 举报
回复
题意不明。。。
AcHerat 2011-12-03
  • 打赏
  • 举报
回复
select *
from tb
where FClostFlag = ?

?表示你输入的 FCloseFlag 的值。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧