我已经在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()
答案 0 :(得分:0)
那不是您可能只需要做的sql处理方式
select distinct(vend)
from allNames a
join nameVend b on a.<fieldname> = b.<fieldname>;
您不需要任何程序。添加表定义,样本数据和预期输出将有助于澄清。