gpt4 book ai didi

mysql - 使用动态选择mysql存储过程的列

转载 作者:行者123 更新时间:2023-11-30 01:32:33 25 4
gpt4 key购买 nike

我正在尝试编写一个存储过程来从数据库中获取一些聚合统计信息。

我想修改程序以允许动态选择列。

我的第一个想法是使用 Case 或 IF 语句来选择不同的列

DELIMITER//
CREATE PROCEDURE 'procStats'(IN buySell varchar(4))
SELECT

CASE
WHEN buySell = 'Buy' THEN AVG(salesTransactions.BuyPrice) AS AveragePrice,
WHEN buySell = 'Sell' THEN AVG(salesTransactions.SellPrice) AS AveragePrice,
END CASE;

MONTHNAME(salesTransactions.DateOfTransaction) as TransactionMonth
FROM
salesTransactions
GROUP BY
TransactionMonth
LIMIT 6;
END//

现在我不认为 case 语句是用于此目的的,而且它目前不起作用......是否可以实现上述目的?

仅供引用 - 我完全清楚我可以只选择两列,但我不希望将这两列暴露给我的网络应用程序。

最佳答案

改变这个

CASE 
WHEN buySell = 'Buy' THEN AVG(salesTransactions.BuyPrice) AS AveragePrice,
WHEN buySell = 'Sell' THEN AVG(salesTransactions.SellPrice) AS AveragePrice,
END CASE;

CASE buySell
WHEN 'Buy' THEN AVG(salesTransactions.BuyPrice)
WHEN 'Sell' THEN AVG(salesTransactions.SellPrice)
END AS AveragePrice,

最后应该是这样的:

DELIMITER//
CREATE PROCEDURE procStats (IN buySell varchar(4))
BEGIN
SELECT

CASE buySell
WHEN 'Buy' THEN AVG(salesTransactions.BuyPrice)
WHEN 'Sell' THEN AVG(salesTransactions.SellPrice)
END AS AveragePrice,

MONTHNAME(salesTransactions.DateOfTransaction) as TransactionMonth
FROM
salesTransactions
GROUP BY
TransactionMonth
LIMIT 6;
END//

我修复了更多语法错误。

关于mysql - 使用动态选择mysql存储过程的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com