简体   繁体   English

存储过程和 select 查询在 MySQL 中返回不同的结果

[英]Stored procedure and select query return different result in MySQL

I am using MySQL and MySQL workbench.我正在使用 MySQL 和 MySQL 工作台。

This is my stored procedure:这是我的存储过程:

CREATE DEFINER=`root`@`%` PROCEDURE `sms_stats`(
                IN  fromDate VARCHAR(8), 
                IN  toDate VARCHAR(8), 
                IN  smsCost VARCHAR(8), 
                OUT bank_id int, 
                OUT bank_name VARCHAR(100), 
                OUT totalSms VARCHAR(20),
                OUT totalCost VARCHAR(20)
)
BEGIN
SELECT c.bank_id as bank_id,
       b.name as bank_name,
       count(c.bank_id) as totalSms, 
       (count(c.bank_id) * smsCost) as totalCost 
FROM calendar c
LEFT JOIN banks b on c.bank_id = b.id
WHERE sms_sent = 1 
AND sms_sent_datetime >= fromDate 
AND sms_sent_datetime <= toDate
GROUP BY bank_id, bank_name;
END

Why stored procedure return (I executed with: call prenotabanca.sms_stats('20220101', '20220420', '0.08', @bank_id, @bank_name, @totalSms, @totalCost);) a different result from为什么存储过程返回(我执行:调用 prenotabanca.sms_stats('20220101', '20220420', '0.08', @bank_id, @bank_name, @totalSms, @totalCost);)一个不同的结果

SELECT c.bank_id as bank_id,
       b.name as bank_name,
       count(c.bank_id) as totalSms, 
       (count(c.bank_id) * '0.08') as totalCost 
FROM prenotabanca.calendar c
LEFT JOIN prenotabanca.banks b on c.bank_id = b.id
WHERE sms_sent = 1 
AND sms_sent_datetime >= '20220101'
AND sms_sent_datetime <= '20220420'
GROUP BY bank_id, bank_name;

I solved, the problem was in the group by, I didn't use the alias and the column bank id is contained in several tables.我解决了,问题出在 group by 上,我没有使用别名,列 bank id 包含在几个表中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM