所以我的数据库中有两个包含成员ID的表。我正在尝试创建一个存储函数,当某个成员不在表A中而是在表B中时,该函数将返回0。
这是我的代码:
Delimiter //
CREATE FUNCTION DoesMemberExist ( mid char(10))
RETURNS INTEGER
READS SQL DATA
BEGIN
IF(((SELECT COUNT(*)
FROM members
WHERE member_id = mid) = 0) AND ((SELECT COUNT(*)
FROM rent_equipment_log
WHERE member_id = mid) > 0)) THEN
RETURN 0;
ELSE RETURN 1;
END IF;
END;
我得到的错误是1064,它表示我的语法有问题,但我不知道出了什么问题?预先感谢!
答案 0 :(得分:0)
您可以改为使用EXISTS()
。另外,缺少END IF
来结束IF
子句。
DELIMITER //
CREATE FUNCTION DoesMemberExist ( mid char(10))
RETURNS INTEGER
READS SQL DATA
BEGIN
IF( NOT EXISTS(SELECT 1 FROM members
WHERE member_id = mid)
AND
EXISTS(SELECT 1 FROM rent_equipment_log
WHERE member_id = mid) ) THEN
RETURN 0;
ELSE RETURN 1;
END IF; -- We need to END the IF clause
END //
DELIMITER ; -- Redefine the delimiter back to ;