Я реализовал это в 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()