sql

plglenn8 2011-01-22 09:33:49
table Student

Id Mark
1 89
2 36
write a sql clause , merge Id=2 to Id=1.
=>
1 125
2 36
...全文
110 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogodiy 2011-01-24
  • 打赏
  • 举报
回复
UPDATE Student
SET Mark=Mark+ISNULL((SELECT Mark FROM Student WHERE ID=2),0)
WHERE ID=1
dawugui 2011-01-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 plglenn8 的回复:]
table Student

Id Mark
1 89
2 36
write a sql clause , merge Id=2 to Id=1.
=>
1 125
2 36
[/Quote]
create table Student(Id int,Mark int)
insert into Student values(1 ,89)
insert into Student values(2 ,36)
go

select t.id , mark = mark + isnull((select top 1 mark from student where id > t.id order by id),0) from student t

drop table student

/*
id mark
----------- -----------
1 125
2 36

(所影响的行数为 2 行)
*/
fzj21408 2011-01-22
  • 打赏
  • 举报
回复

select id,(select sum(mark) from temp t1 where t1.id >= t2.id )
from temp t2
Shawn 2011-01-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 plglenn8 的回复:]
UPDATE Student
SET Mark=
(
SELECT Mark FROM Student AS B
WHERE B.ID=2 AND A.ID=1
)
this is my current sql clause, any bug or better sql clause.
[/Quote]
没有定义A表,正确的语法参考如下:
CREATE TABLE Student
(
id INT,
MARK INT
)
INSERT INTO Student
SELECT 1, 89 UNION ALL
SELECT 2, 36 UNION ALL
SELECT 3, 2

UPDATE A
SET MARK = MARK + ISNULL
(
(SELECT MARK FROM Student AS B WHERE (B.ID=2 AND A.ID=1) OR (B.ID=3 AND A.ID=2)), 0 --注意这儿的原理
)
FROM Student A
哇咔咔 2011-01-22
  • 打赏
  • 举报
回复

update student
set mark = (select sum(mark) from id in (1,2))
where id = 1

select * from student

1 125
2 36
AcHerat 元老 2011-01-22
  • 打赏
  • 举报
回复

update student
set mark = mark + (select top 1 isnull(mark,0)
from student t
where t.id > student.id
order by t.id)
plglenn8 2011-01-22
  • 打赏
  • 举报
回复

DECLARE @Student TABLE (Id INT,Mark INT)
INSERT INTO @Student
SELECT 1,89
UNION ALL
SELECT 2,36

SELECT *
FROM @Student
UPDATE @Student
SET Mark=
(
SELECT Mark FROM @Student AS B
WHERE B.ID=2 AND @Student.ID=1
)

Msg 137, Level 15, State 2, Line 14
Must declare the scalar variable "@Student".
sxiaohui8709253 2011-01-22
  • 打赏
  • 举报
回复

update student set mark=a.mark from
student inner join
(select id,
(select mark from student where id=t.id)+isnull((select mark from student where id=t.id+1),0) as mark
from student t)a
on student.id=a.id
plglenn8 2011-01-22
  • 打赏
  • 举报
回复
UPDATE Student
SET Mark=
(
SELECT Mark FROM Student AS B
WHERE B.ID=2 AND A.ID=1
)
this is my current sql clause, any bug or better sql clause.
叶子 2011-01-22
  • 打赏
  • 举报
回复

declare @Student table (Id int,Mark int)
insert into @Student
select 1,89 union all
select 2,36

SELECT a.id ,
a.Mark + ISNULL(b.Mark, 0) AS Mark
FROM @Student a
LEFT JOIN @Student b ON a.id = b.id - 1

/*
id Mark
----------- -----------
1 125
2 36
*/
plglenn8 2011-01-22
  • 打赏
  • 举报
回复
I want update the student table. thanks.
sxiaohui8709253 2011-01-22
  • 打赏
  • 举报
回复
select id,(select mark from student where id=t.id)+isnull((select mark from student where id=t.id+1),0) from student t

34,576

社区成员

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

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