SQL Query-Update中需要帮助

时间:2011-09-25 17:53:38

标签: sql sql-server

我有一个名为Student_Details的表,其中包含以下列: IDRoll_NoStudent_NameStudent_AddressStudent_Class

ID是主键。

我遇到一个问题,即每个学生的记录分为两行。

例如,第一行包含:1, 20, john, '', '',第二行包含:'2', '', '', 'ABCDEFG', 'A' Student_Address

我想更新Student_Class1中的数据 来自行2中数据的ID为2的行中的字段,然后 删除行1,20,'john', 'ABCDEFG', 'A'。示例中的结果为{{1}}。

有没有办法做到这一点?我不想使用游标,因为 数据库有大约50000行。

1 个答案:

答案 0 :(得分:2)

没有安装SQL Server,但是使用标准的SQL语法使它在MySQL中工作,所以它也适用于你。

请注意,我为每列创建了2 update -s,因为MySQL似乎不支持UPDATE table SET (col1, col2) = (<a subquery with 2 columns>)语法。

我还将UPDATE子查询包装在另一个子查询中,这只是因为一些MySQL限制所必需的。

3个查询应该可以在一个事务中运行:

update student_details s0 set s0.student_address = 
(
 select student_address from (
  select s1.id, s1.roll_no, s2.student_address
  from student_details s1
  join student_details s2
   on s2.id=s1.id+1
 ) sub where sub.id = s0.id
)
where s0.roll_no <> '';

update student_details s0 set s0.student_class = 
(
 select student_class from (
  select s1.id, s1.roll_no, s2.student_class
  from student_details s1
  join student_details s2
   on s2.id=s1.id+1
 ) sub where sub.id = s0.id
)
where s0.roll_no <> '';

delete from student_details where roll_no='';
相关问题