MySQL - 在内部联接中使用存储过程的结果

时间:2015-05-31 15:04:32

标签: mysql stored-procedures

我有一个MySQL存储过程,它返回多行。有没有办法在另一个表的内部连接中使用此结果?我试过了:

SELECT ErrorMessage FROM ErrorMessage em 
INNER JOIN User_Language(pCompanyID, pUserID) l ON em.Language=l.LanguageID 
WHERE ErrorCode = pErrorCode 
ORDER BY l.LanguageOrder LIMIT 1;

在此示例中,User_Language是按优先顺序返回语言列表的存储过程。目的是以用户的首选语言返回错误消息。

1 个答案:

答案 0 :(得分:4)

我找到了可行的解决方案。在User_Language存储过程中,我创建了一个Temp表(称为UserLanguages),然后我可以在内连接中使用它。

CALL User_Language(pCompanyID, pUserID);
SELECT ErrorMessage INTO vErrorMessage FROM ErrorMessage em
INNER JOIN UserLanguages l ON em.Language=l.LanguageID
WHERE ErrorCode = pErrorCode
ORDER BY l.LanguageOrder LIMIT 1;