首页 > 解决方案 > 使用一个查询的结果作为变量输入到 MySQL 中的其他查询

问题描述

我已经在 Python 中实现了这一点,但我希望在 MySQL 中有一种更快的方法来实现它。

我有一个名为 allNames 的表。我想获取select该表上的查询结果,并将每一行作为变量传递给另一个查询(也是 a 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()

标签: mysqlsqldatabase-cursor

解决方案


这不是你可能只需要的 sql 做事方式

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

而且你不需要程序。添加表格定义、示例数据和预期输出将有助于澄清。


推荐阅读