【问题标题】:Why sql function return count of all and single select return correct value?为什么sql函数返回全部计数和单选返回正确值?
【发布时间】:2019-02-27 20:32:02
【问题描述】:

我有返回所有行的函数,但我希望返回 0 或 1,因为 Sid 是唯一的:

CREATE DEFINER=`root`@`localhost` FUNCTION `IsInDatabase`(sId VARCHAR(21)) RETURNS tinyint(1)
BEGIN
RETURN (SELECT COUNT(Id) FROM table WHERE SId =sid);
END

直接执行时,

SELECT COUNT(Id) FROM table WHERE SId ='87882118' 

将准确返回我需要的内容:“1”或“0”。为什么我的功能不能正常工作?

【问题讨论】:

    标签: mysql database function


    【解决方案1】:

    这是因为 MySQL 不区分大小写,所以SIdsid 是同名的,它不知道你在查询中指的是哪一个,所以它选择了一个(两者都相同)实例),当然它匹配每一行。尝试更改您的输入参数名称:

    CREATE DEFINER=`root`@`localhost` FUNCTION `IsInDatabase`(sIdin VARCHAR(21)) RETURNS tinyint(1)
    BEGIN
        RETURN (SELECT COUNT(Id) FROM table WHERE SId =sIdin);
    END
    

    【讨论】:

    • Holly ****,我已经花了 3 天时间,这是个问题?!,我讨厌 SQL。非常感谢伙计!
    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2019-09-24
    相关资源
    最近更新 更多