Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
声明子查询的MySQL存储过程返回超过1行_Mysql_Stored Procedures - Fatal编程技术网

声明子查询的MySQL存储过程返回超过1行

声明子查询的MySQL存储过程返回超过1行,mysql,stored-procedures,Mysql,Stored Procedures,如果执行此SQL: SET @myId = (SELECT `MyId` from `LinkTable` where `LinkTableId` = '73548055'); SELECT * FROM `MyTable` AS `Extent1` WHERE `Extent1`.`MyId` = @myId; 我只有一排 如果将其放入存储过程中: PROCEDURE `Get_Results`(IN linkTableId nvarchar(255)) BEGIN SET @

如果执行此SQL:

SET @myId = (SELECT `MyId` from `LinkTable` where `LinkTableId` = '73548055');
SELECT * FROM `MyTable` AS `Extent1` WHERE  `Extent1`.`MyId` = @myId;
我只有一排

如果将其放入存储过程中:

PROCEDURE `Get_Results`(IN linkTableId nvarchar(255))
BEGIN


    SET @myId = (SELECT `MyId` from `LinkTable` where `LinkTableId` = linkTableId);
    SELECT * FROM `MyTable` AS `Extent1` WHERE  `Extent1`.`MyId` = @myId;

END

CALL `Get_Results`('73548055')
我得到了错误

错误代码:1242。子查询返回超过1行

为什么?

编辑:出于兴趣,我刚刚尝试将SP更改为

PROCEDURE `Get_Results`(IN linkTableId nvarchar(255))
BEGIN

    SELECT * FROM `MyTable` AS `Extent1` WHERE  `Extent1`.`MyId` IN (SELECT `MyId` from `LinkTable` where `LinkTableId` = linkTableId);
END
它仍然返回相同的错误。

请确保

SET @myId = (SELECT `MyId` from `LinkTable` where `LinkTableId` = myLinkTableId);

此子查询仅返回1行。

@RaymondNijland但如果在SP之外使用相同的参数运行它,它将返回一行。源中是否有空值?@jimmy8ball可能有空字段。不应该是整行的空id吗?@jimmy8ball不应该。它们都是键。我有-这就是上面的代码想要演示的。@MattThrower,将过程参数名称linkTableId更改为MyLinkTableId很好,但这不是原始代码中的问题。检查这里@MattThrower,出于测试目的,您可以在子查询中添加限制1