MySQL用户定义函数存储查询结果
Posted
技术标签:
【中文标题】MySQL用户定义函数存储查询结果【英文标题】:MySQL User Defined Functions store query results 【发布时间】:2014-02-24 06:57:59 【问题描述】:目标: 我正在尝试将查询的表结果存储为函数中的变量。 我希望能够在这个过程中参考这些表格做更多的事情。
我在下面有一个脚手架函数:
DELIMITER $$
CREATE FUNCTION getRatio(treatmentA INT, treatmentB INT)
RETURNS FLOAT
BEGIN
DECLARE answer FLOAT;
DECLARE countA, countB, countABIntersection;
# Store patients of treatment A
SELECT DISTINCT patient
INTO **Variable**
FROM Treatment
WHERE TreatmentID = treatmentA;
# Store patients of treatment B
SELECT DISTINCT patient
INTO **Variable**
FROM Treatment
WHERE TreatmentID = treatmentB;
# Get Intersection of treatment B
Set answer = count(TreatmentA) * count(TreatmentB) * count(IntersectionTreatmentAB)
RETURN answer;
END $$
DELIMITER ;
如果有人可以提供帮助,将不胜感激。 提前致谢。
【问题讨论】:
您可以在 Select 语句中的上述变量中存储单个值。不确定您的 select 语句返回了多少值。 【参考方案1】:您只能从 mysql 具有数据类型的函数中存储或返回值。
简而言之,如果要将结果集存储到变量中,则必须具有表数据类型,不幸的是 MySQL 没有。
解决方案:您可以做的是,您可以为要存储的每个结果集创建具有相应列的临时表(或者在您的情况下可能在同一个临时表中)。
对临时表执行所有操作并将结果存储到变量(在你的情况下为 FLOAT),返回变量。
如果有帮助,请告诉我:)
-谢谢
【讨论】:
谢谢!我不知道 MySQL 中没有表数据类型。以上是关于MySQL用户定义函数存储查询结果的主要内容,如果未能解决你的问题,请参考以下文章