MySQL - 在内部联接中使用存储过程的结果
MySQL - Using the result of a Stored Procedure in an Inner Join
我有一个 MySQL 存储过程 return 多行。有没有办法在与另一个 table 的内部连接中使用此结果?我试过:
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 是存储过程,return 是按优先顺序排列的语言列表。目的是 return 以用户首选语言显示错误消息。
我找到了可行的解决方案。在 User_Language 存储过程中,我创建了一个 Temp table(称为 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;
我有一个 MySQL 存储过程 return 多行。有没有办法在与另一个 table 的内部连接中使用此结果?我试过:
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 是存储过程,return 是按优先顺序排列的语言列表。目的是 return 以用户首选语言显示错误消息。
我找到了可行的解决方案。在 User_Language 存储过程中,我创建了一个 Temp table(称为 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;