T-SQL查询问题

wangyanboq 2010-12-07 03:07:46
CREATE TABLE #A (name char(1), value int)
INSERT #A('A', 1)
INSERT #A('B', 2)
INSERT #A('C', 5)
INSERT #A('D', 9)
INSERT #A('E', 10)
INSERT #A('F', 10)


用一条SELECT语句,返回以下结果:
不存在其它任何记录,使得两者Value相减绝对值小于2。或者如果存在其它记录,使得两者Value相减绝对值小于2,取其中Value较小的那条

结果为
A 1
C 5
D 9
...全文
96 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyanboq 2010-12-08
  • 打赏
  • 举报
回复
自己测出来了,上网机器没有SQL环境,不保证下面的语句一定通过,但基本思路差不多
SELECT * FROM #A T
WHERE value = (SELECT MIN(value) FROM #A WHREE ABS(value, T.value) < 2)
jxqn_liu 2010-12-07
  • 打赏
  • 举报
回复
看不懂讲的什么东东
luoyefeng1022 2010-12-07
  • 打赏
  • 举报
回复
都没看懂,还有人写出来,确实牛
jiemo587 2010-12-07
  • 打赏
  • 举报
回复
要下班了,明天来做
fengyunshier 2010-12-07
  • 打赏
  • 举报
回复
不知所云
abuying 2010-12-07
  • 打赏
  • 举报
回复
CREATE TABLE #A (name char(1), value int)
GO

INSERT into #A values('A', 1)
INSERT into #A values('B', 2)
INSERT into #A values('C', 5)
INSERT into #A values('D', 9)
INSERT into #A values('E', 10)
INSERT into #A values('F', 10)
GO
select distinct a.* from #A a left join #A b on abs(a.value-b.value)<=2 where a.name<>b.name and a.value<b.value
--or
select * from #A a where exists(select 1 from #A b where a.name<>b.name and a.value<b.value and abs(a.value-b.value)<=2)
/**
name value
---- -----------
A 1
D 9

(所影响的行数为 2 行)
**/
jxmlearner 2010-12-07
  • 打赏
  • 举报
回复
看迷糊了,不清楚楼主意思,还请讲明了点!
abuying 2010-12-07
  • 打赏
  • 举报
回复
你的答案有误!
c 5怎么来的,与谁都大于2,
gogodiy 2010-12-07
  • 打赏
  • 举报
回复
如何判断:不存在其他任何记录;存在其他记录?

34,576

社区成员

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

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