mysql - 使用一个查询的结果作为变量输入到 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()
解决方案
这不是你可能只需要的 sql 做事方式
select distinct(vend)
from allNames a
join nameVend b on a.<fieldname> = b.<fieldname>;
而且你不需要程序。添加表格定义、示例数据和预期输出将有助于澄清。
推荐阅读
- inno-setup - 如何使用 ISSI 在 Inno Setup 的非常静音模式设置中隐藏启动画面?
- python - 如何在 Gekko 中构建过程模拟器,了解时间常数和稳态值
- python - 使用 Flask-restful 对层次关系进行编组 URL
- machine-learning - 使用迁移学习的单类数据集的图像分类
- powerbi - 在 PowerBI 中将多行组合在一起
- python - 如何访问 Pandas Dataframe 一行中的多索引值?
- javascript - Stomp JS 基本认证
- php - PHP: oci_execute(): ORA-01008: 并非所有变量都绑定
- python - 用 papermill 执行一个 Jupyter notebook 并输出一个唯一的文件名
- java - Spring boot fat jar 无法从 application.properties 中定义的绝对路径读取文件