gpt4 book ai didi

MySQL 存储过程返回多条记录,而直接查询返回一条

转载 作者:行者123 更新时间:2023-11-28 23:14:39 24 4
gpt4 key购买 nike

如果我在下面创建这个存储过程并运行它,我会从表中取回两行,而它应该只是一个查询。

    CREATE PROCEDURE `getUserName`(IN Guid VARCHAR(36), IN GameID INT(11))  
BEGIN
SELECT `Name` as UserName, `GUID` as guid
FROM playerdata
WHERE `GUID` = Guid AND `GameID` = GameID;
END

CALL getUserName('86fd1007-4a9c-11e7-b2e2-1803733c2d41', 1001);

返回见图片

但是,如果我只是将它作为常规查询来运行

    SELECT `Name` as UserName, `GUID` as guid
FROM playerdata
WHERE `GUID` = "86fd1007-4a9c-11e7-b2e2-1803733c2d41" AND `GameID` = 1001;

返回见图片

Table Data and Query Results

我对考虑到的行为感到困惑……至少对我来说它们是同一回事。

最佳答案

CREATE PROCEDURE `getUserName`(IN IN_Guid VARCHAR(36), IN IN_GameID INT(11))  
BEGIN
SELECT `Name` as UserName, `GUID` as guid
FROM playerdata
WHERE `GUID` = IN_Guid AND `GameID` = IN_GameID ;
END

CALL getUserName('86fd1007-4a9c-11e7-b2e2-1803733c2d41', 1001);

试试上面的代码。

如果输入参数与列名同名,它最终将等于 1=1 所以没有条件的意义。意味着 GameID = GameID1=1 两者是等价的。因此,始终尝试使输入和输出参数名称与特定表的列名称不同。

我试过它工作正常。

希望对您有所帮助。

关于MySQL 存储过程返回多条记录,而直接查询返回一条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44410930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com