使用一个查询的结果作为变量输入到MySQL中的其他查询

时间:2019-05-02 23:22:32

标签: mysql sql database-cursor

我已经在Python中实现了此功能,但我希望在MySQL中有一种更快的方式来实现它。

我有一个名为allNames的表。我想对该表进行select查询的结果,并将每一行作为变量传递给另一个查询(也是select)。

在Python中,它看起来像这样:

def getOccurancePerVending_Count(cur):
    try:
        cur.execute(qur.allNames)
        allNames =cur.fetchall()
        for n in allNames:
            cur.execute(qur.nameVend%(n[0]))
            count = cur.fetchone()
            print("%s,%s"%(n[0],count)
    except:
        print("Didn't work")

这适用于python,但是对于非常大的数据库而言,它的运行速度令人难以置信。我很高兴在MySQL中执行此操作要快得多。

编辑:添加了MySQL在MySQL中控制它的尝试...

drop procedure if exists GetFilteredData;
DELIMITER $$
CREATE PROCEDURE GetFilteredData()
BEGIN

    DECLARE bDone INT;
    DECLARE f_name varchar(150);

    DECLARE curs CURSOR FOR select fname from allNames;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET bDone = 1;

    OPEN curs;

    SET bDone = 0;   
    repeat
        SET @sql = concat('select distinct(vend) from nameVend where fName =(', f_name,')');
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    until bDone END REPEAT;

    close curs;
END$$
call GetFilteredData()

1 个答案:

答案 0 :(得分:0)

那不是您可能只需要做的sql处理方式

select distinct(vend) 
from allNames a
join nameVend b on a.<fieldname> = b.<fieldname>;

您不需要任何程序。添加表定义,样本数据和预期输出将有助于澄清。