MySQL-列计数函数位置错误

MySQL-列计数函数位置错误,mysql,function,Mysql,Function,我想做一个返回值为整数的函数 基于名为BOOKCAT的表中的索引量 首先,我试图加载表以确保它运行,但是,我一直收到一个错误,说分隔符不是有效的位置 这是我在函数方面的经验 .Ref是一个外键,用于标识保留在预订中的cat ID的数量 此表的结果如下所示: BOOKCAT Ref CatID '1', '1' '2', '2' '2', '3' '3', '1' '4', '2' '5', '3' '5', '4' '6', '5' '7', '6' '7', '7' '7', '8' 如果没

我想做一个返回值为整数的函数

基于名为BOOKCAT的表中的索引量

首先,我试图加载表以确保它运行,但是,我一直收到一个错误,说分隔符不是有效的位置

这是我在函数方面的经验

.Ref是一个外键,用于标识保留在预订中的cat ID的数量

此表的结果如下所示:

BOOKCAT
Ref CatID
'1', '1'
'2', '2'
'2', '3'
'3', '1'
'4', '2'
'5', '3'
'5', '4'
'6', '5'
'7', '6'
'7', '7'
'7', '8'

如果没有select,set语句就是错误的——它没有bookcat的概念。最简单的更改是选择into,并且应该在分隔符之前加空格。此外,如果ref和catid是整数,则不需要引用插入值

drop table if exists t;
create table t(Ref int, CatID int);
insert into t values
(1,1),
(2,2),
(2,3),
(3,1),
(4,2),
(5,3),
(5,4),
(6,5),
(7,6),
(7,7),
(7,8);

drop function if exists f;
DELIMITER |
CREATE FUNCTION f(ReferenceNumber INTEGER)
RETURNS INTEGER
BEGIN 
DECLARE NUMCATS INTEGER;
    SELECT SUM(BOOKCAT.Ref = ReferenceNumber) into numcats
    FROM t bookcat;

    #SET NUMCATS = SUM(BOOKCAT.Ref = ReferenceNumber);

    RETURN NUMCATS;
END |
DELIMITER ;

select f(7);

+------+
| f(7) |
+------+
|    3 |
+------+
1 row in set (0.001 sec)

也许您不需要设置分隔符——您使用什么ide来创建此函数?如果没有,则如何创建。您还需要设置变量,并且不能在函数中返回结果集。select应该做什么?什么是FROK BOOKCAT?我建议你再试试这个..MySQL workbench-mac,我更新了问题和代码,BOOKCAT是表,位置错误仍然存在,谢谢
drop table if exists t;
create table t(Ref int, CatID int);
insert into t values
(1,1),
(2,2),
(2,3),
(3,1),
(4,2),
(5,3),
(5,4),
(6,5),
(7,6),
(7,7),
(7,8);

drop function if exists f;
DELIMITER |
CREATE FUNCTION f(ReferenceNumber INTEGER)
RETURNS INTEGER
BEGIN 
DECLARE NUMCATS INTEGER;
    SELECT SUM(BOOKCAT.Ref = ReferenceNumber) into numcats
    FROM t bookcat;

    #SET NUMCATS = SUM(BOOKCAT.Ref = ReferenceNumber);

    RETURN NUMCATS;
END |
DELIMITER ;

select f(7);

+------+
| f(7) |
+------+
|    3 |
+------+
1 row in set (0.001 sec)