请问以下句子如何改正?

Generics 2007-05-12 01:54:39
select item1
from
(
select item1, ordering = CASE WHEN item2 IS NULL THEN 1 ELSE 0 END
from tableA
order by ordering
)
...全文
213 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojuju10 2007-05-12
  • 打赏
  • 举报
回复
(
select item1, ordering = CASE WHEN item2 IS NULL THEN 1 ELSE 0 END
from tableA
Where TableB.Item3 = TableA.Item3
order by ordering
)

--内有order by ,需要在select 后面加top ,所以会报错!
正确的为:

Update TableB
Set Item1 =
(
select TOP 1 item1
from
(
select top 100 percent item1, ordering = CASE WHEN item2 IS NULL THEN 1 ELSE 0 END
from tableA
Where TableB.Item3 = TableA.Item3
order by ordering
) a
)
bill024 2007-05-12
  • 打赏
  • 举报
回复
create table TableA(Item1 varchar(10),Item2 varchar(10),Item3 int)
insert TableA select 'qq','',1
union all select 'aa','a',3
union all select 'zz','b',2
union all select 'ww','',4
union all select 'ee','c',4

create table TableB(Item1 varchar(10),Item2 varchar(10),Item3 int)
insert TableB select '','',8
union all select '','a',9
union all select '','b',10
union all select '','',4
union all select '','c',4

Update TableB
Set TableB.Item1 =
(
select TOP 1 item1 from
(
select top 100 percent TableA.Item1, ordering = CASE WHEN TableA.Item2 IS NULL THEN 1 ELSE 0 END
from TableA,TableB
Where TableB.Item3 = TableA.Item3
order by ordering
)a
)

select * from TableB

drop table TableA,TableB

Item1 Item2 Item3
---------- ---------- -----------
ww 8
ww a 9
ww b 10
ww 4
ww c 4

(所影响的行数为 5 行)
qys2000 2007-05-12
  • 打赏
  • 举报
回复
select item1
from
(
select top 100 percent item1, ordering = CASE WHEN item2 IS NULL THEN 1 ELSE 0 END
from tableA
order by ordering
)a
Generics 2007-05-12
  • 打赏
  • 举报
回复
/* it will be something like this
but i cannot use embedded select sentence
*/
Update TableB
Set Item1 =
(
select TOP 1 item1
from
(
select item1, ordering = CASE WHEN item2 IS NULL THEN 1 ELSE 0 END
from tableA
Where TableB.Item3 = TableA.Item3
order by ordering
)
)
Generics 2007-05-12
  • 打赏
  • 举报
回复
我的问题其实是怎样从二项里选出一项来(因为我要用UPDATE。。。SET赋值), SELECT里包含SELECT好象不允许!
bill024 2007-05-12
  • 打赏
  • 举报
回复
select item1
from
(
select top 100 percent item1, ordering = CASE WHEN item2 IS NULL THEN 1 ELSE 0 END
from tableA
order by ordering
)a

34,590

社区成员

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

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