在MySQL中为查询返回的每一行调用一个查询

在MySQL中为查询返回的每一行调用一个查询,mysql,mariadb,Mysql,Mariadb,我有一个问题,对于“employee”表中的每个员工,我需要调用“KPI”表中的SELECT查询。我使用游标读取“employee”表中的每个值: DELIMITER $$ CREATE PROCEDURE sp6 () BEGIN DECLARE finished INTEGER DEFAULT 0; DECLARE temp varchar(100) DEFAULT ""; DEClARE cs1 CURSOR FOR SELECT `full_name` FROM

我有一个问题,对于“employee”表中的每个员工,我需要调用“KPI”表中的SELECT查询。我使用游标读取“employee”表中的每个值:

DELIMITER $$
CREATE PROCEDURE sp6 ()
BEGIN
    DECLARE finished INTEGER DEFAULT 0;
    DECLARE temp varchar(100) DEFAULT "";

    DEClARE cs1 CURSOR FOR SELECT `full_name` FROM `employee`;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
    OPEN cs1;
    fLoop: LOOP
        FETCH cs1 INTO temp;
        IF finished = 1 THEN 
            LEAVE fLoop;
      END IF;

      [FROM KPI TABLE, QUERY TO GET KPI OF EMPLOYEE WITH NAME 'temp']

 END LOOP fLoop;
 CLOSE cs1;

END$$
DELIMITER;
但我得到了错误信息:


谁能帮我一下我哪里做错了?谢谢。

这里不需要光标。只需在
全名
上加入
KPI
员工

SELECT k.*
       FROM `KPI` k
            INNER JOIN `employee` e
                       ON e.`full_name` = k.`full_name`;

为什么需要使用光标来执行此操作,它可能只是一个select查询。选择*FROM
KPI
AS k internal JOIN
employee
AS e ON k.
full\u name
=e.
full\u name
谢谢,我需要计算每个员工的KPI,我的想法是使用光标标识每个员工,并将此值传递给SELECT查询进行计算。我如何使用innerjoin做到这一点?如果您每个员工都有许多KPI,那么您想要哪一个,以及如何识别它们(按日期、完成、进行中、今年)?谢谢您,使用innerjoin,您将拥有同一员工的许多记录,我如何计算每个员工的KPI?我的想法是使用游标标识每个员工,并将此值传递给SELECT查询进行计算。@Joe:是的,如果在
KPI
中有更多的员工记录,您将获得更多的记录。但在游标方法中也是如此。