【问题标题】:MySQL - Using the result of a Stored Procedure in an Inner JoinMySQL - 在内部联接中使用存储过程的结果
【发布时间】:2015-05-31 15:04:31
【问题描述】:

我有一个返回多行的 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 是按优先顺序返回语言列表的存储过程。目的是以用户的首选语言返回错误消息。

【问题讨论】:

  • 不知道MYSQL能不能返回和使用一个表。我玩过返回字符串(如',English,Spanish,')并使用以下内容进行连接的技巧:
  • 不知道MYSQL能不能返回和使用一个表。我玩过返回字符串(如',English,Spanish,')并使用以下内容进行连接的技巧:JOIN ErrorMesage em ON User_Language(pCompanyID, pUserID) LIKE CONCAT('%,',em.Language',', %') 我需要考虑如何对结果进行排序。只是一个想法。

标签: mysql stored-procedures


【解决方案1】:

我找到了一个可行的解决方案。在 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;

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2013-08-14
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多