如果我执行此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
它仍然返回相同的错误。
答案 0 :(得分:1)
确保
SET @myId = (SELECT `MyId` from `LinkTable` where `LinkTableId` = myLinkTableId);
此子查询仅返回1行。