mysql - 查询中函数的 IN 运算符的替代或替换 IN 运算符?

标签 mysql sql

我有一个查询,我需要同样的查询 不使用 IN 运算符

这里是查询

  create function registerStudent(
      in s_id varchar(5),
      in s_courseid varchar (8), 
      in s_secid varchar (8),
      in semester varchar (6), 
      in s_year numeric (4,0),
      out errorMsg varchar(100) returns integer 
      begin 
           declare currEnrol int; 
           select count(*) into currEnrol from takes
           where course_id = s_courseid 
           and secid = s_secid 
           and semester = s_semester 
           and year = s_year; 

           declare limit int; 
           select capacity into limit 
           from classroom 
           natural join section 
           where course_id = s_courseid 
           and secid = s_secid 
           and semester = s_semester 
           and year = s_year; 

           if (currEnrol < limit) begin 
               insert into takes values  (s_id, s_courseid, s_secid, s_semester, s_year, null); 
               return(0); 
           end

          set errorMsg = 'Enrollment limit reached for course ' I I s_courseid II ' section ' I I s_secid; 
          return(-1); 
      end; 

最佳答案

在括号内列出存储函数的所有参数。默认情况下,所有参数都是 IN 参数。您不能为参数指定 IN 、 OUT 或 INOUT 修饰符。

create function registerStudent(
      s_id varchar(5),
      s_courseid varchar (8), 
      s_secid varchar (8),
      semester varchar (6), 
      s_year numeric (4,0),
      out errorMsg varchar(100)
      ) returns integer 
      begin 
           declare currEnrol int; 
           select count(*) into currEnrol from takes
           where course_id = s_courseid 
           and secid = s_secid 
           and semester = s_semester 
           and year = s_year; 

       declare limit int; 
       select capacity into limit 
       from classroom 
       natural join section 
       where course_id = s_courseid 
       and secid = s_secid 
       and semester = s_semester 
       and year = s_year; 

       if (currEnrol < limit) begin 
           insert into takes values  (s_id, s_courseid, s_secid, s_semester, s_year, null); 
           return(0); 
       end

      set errorMsg = 'Enrollment limit reached for course ' I I s_courseid II ' section ' I I s_secid; 
      return(-1); 
  end; 

关于mysql - 查询中函数的 IN 运算符的替代或替换 IN 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35838199/

相关文章:

mysql - mysql 中的 GROUP BY 以 IS NULL 列为条件

mysql - MAMP - 突然在我的本地主机上收到 404s

mysql - 统计所有具有特定金额总和的用户

sql - 查找返回多行的计数(*)的平均值

php - 在同一个 PHP 脚本中使用 MySQL 和 PostgreSQL

php - 根据 PHP 中的字形检查字符串的语言

mysql - 如何通过连接表中的引用对查找记录?

sql - 在 sql-server 中连接 3 个表

mysql - MySQL 查询中的 LEN() of %

php - 使用 mysqli 配置文件