sql 查询条件判断

孤独岛 2022-08-06 11:02:13

列A  列 B

aa     bb

bb    cc

cc   dd

有这么一个表,如果我查 bb ,先从B列开始查询 如果查询不到就从A列查询。这样的sql查询语句怎么写

...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
炎同学要努力 2023-06-08
  • 打赏
  • 举报
回复 1

;with t as(
select A ='aa',B ='bb' union all
select A ='bb',B ='cc' union all
select A ='cc',B ='dd'
)
declare
@temp varchar(20)
set @temp = 'a'+'%'

select*
from t
where B like @temp or A like @temp

morliz子轩 2022-08-08
  • 打赏
  • 举报
回复

demo:

declare minId int,
      @maxId int,
     @count int

--变量体(列名A、B)的值
declare @colA nvarchar(20),
    @colB nvarchar(20)

--首先逐行遍历表数据
select @count = count(*), minId = min(id), max(Id) from [表名]
while (@min is not null and @minId <= @maxId)
begin
--获取每行的A值和B值
select @colA = [列名A], @colB = [列名B] from [表名] where Id = @minId
--判断B列值是否为空
if isnull(@colB,'') !=''
begin
//do someting ....
end

if isnull(@colB,'') ='' and isnull(@colA,'') !=''
begin
//do someting ....
end

set @minId = @minId + 1

end

吉普赛的歌 版主 2022-08-06
  • 打赏
  • 举报
回复

select * from t where 列B =‘bb’ or 列A='bb'

孤独岛 2022-08-06
  • 举报
回复
@吉普赛的歌 这样的话,如果B列有,A列也有 ,结果都会查询出来,我的意思,如果B列有 就不再查询A列。
吉普赛的歌 版主 2022-08-06
  • 举报
回复
@孤独岛 你的说法本身就有问题。 因为最开始就是查B列,无论A有没有。 除非你要完全排除B列和A列 都有的情况,我的写法才是错的。
孤独岛 2022-08-06
  • 举报
回复
@吉普赛的歌 是的,A列B列都有的情况下, 只从B列查询,如果B列没有,就从A列查询
2条回复

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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