select @字段=字段 from 表名 where 字段=@字段
时间: 2023-10-09 19:08:21 浏览: 61
您好!根据您的问题,您想在指定的表中选择一个字段,并将其赋值给一个变量。正确的SQL语句应该是:
```sql
SELECT @字段 = 字段 FROM 表名 WHERE 字段 = @字段;
```
请注意,`@字段` 是一个变量,可以根据您的需求进行更改。这个语句将从指定的表中选择满足条件的记录,并将结果赋值给变量 `@字段`。
相关问题
create trigger tr_insert on takes for insert as declare @sno varchar(5) declare @cno varchar(5) declare @credit numeric(3,0) select @sno=ID,@cno=course_id from inserted select @credit=credits from course where course_id=@cno update student set tot_cred=tot_cred+@credit where ID=@sno go
这是一个 SQL Server 数据库中的触发器,用于在 takes 表中插入数据时,更新 student 表中的 tot_cred 字段。具体来说,当在 takes 表中插入一条数据时,触发器会从 inserted 表中获取学生的 ID 和课程的 course_id,并从 course 表中获取该课程的学分 credits。然后,触发器会根据学生的 ID 和课程的学分更新 student 表中的 tot_cred 字段,以反映该学生现在已获得的总学分数。当所有更新完成后,触发器会结束执行。
[SQL] CREATE PROCEDURE proc_10ASBEGIN -- 添加序号字段 ALTER TABLE 学生成绩表 ADD 序号 INT; -- 添加评价字段 ALTER TABLE 学生成绩表 ADD 评价 VARCHAR(20); -- 更新评价字段 DECLARE @id INT; DECLARE @score INT; DECLARE @evaluation VARCHAR(20); DECLARE cursor1 CURSOR FOR SELECT id, score FROM 学生成绩表; OPEN cursor1; FETCH NEXT FROM cursor1 INTO @id, @score; WHILE @@FETCH_STATUS = 0 BEGIN IF @score >= 90 SET @evaluation = '优秀'; ELSE IF @score >= 80 SET @evaluation = '良好'; ELSE IF @score >= 70 SET @evaluation = '一般'; ELSE IF @score >= 60 SET @evaluation = '合格'; ELSE SET @evaluation = '较差'; UPDATE 学生成绩表 SET 序号 = @id, 评价 = @evaluation WHERE id = @id; FETCH NEXT FROM cursor1 INTO @id, @score; END CLOSE cursor1; DEALLOCATE cursor1;END [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
这段 SQL 存储过程的语法错误可能是因为 BEGIN 后面没有加空格,正确的写法应该是:
CREATE PROCEDURE proc_10
AS
BEGIN
-- 添加序号字段
ALTER TABLE 学生成绩表 ADD 序号 INT;
-- 添加评价字段
ALTER TABLE 学生成绩表 ADD 评价 VARCHAR(20);
-- 更新评价字段
DECLARE @id INT;
DECLARE @score INT;
DECLARE @evaluation VARCHAR(20);
DECLARE cursor1 CURSOR FOR SELECT id, score FROM 学生成绩表;
OPEN cursor1;
FETCH NEXT FROM cursor1 INTO @id, @score;
WHILE @@FETCH_STATUS = 0
BEGIN
IF @score >= 90
SET @evaluation = '优秀';
ELSE IF @score >= 80
SET @evaluation = '良好';
ELSE IF @score >= 70
SET @evaluation = '一般';
ELSE IF @score >= 60
SET @evaluation = '合格';
ELSE
SET @evaluation = '较差';
UPDATE 学生成绩表 SET 序号 = @id, 评价 = @evaluation WHERE id = @id;
FETCH NEXT FROM cursor1 INTO @id, @score;
END
CLOSE cursor1;
DEALLOCATE cursor1;
END