mysql - 在 MySQL 中创建过程时出现未知的系统变量
问题描述
我不知道如何创建存储过程并在 while 语句中使用 select。这个查询会出现这个错误"unknown system variable 'tableview'"
。请任何人帮助我修复它。谢谢你的帮助。
CREATE PROCEDURE tablebts()
BEGIN
DECLARE x INT;
SET x=0;
SET tableview;
WHILE x < 10 DO
SET x=x + 1;
SET tableview = SELECT idbts
FROM (SELECT idbts, namesite, COUNT(idbts) AS jumlah
FROM (SELECT ts.site_id AS idbts, tps.msisdn AS msisdn, tb.site_name AS namesite
FROM tb_profile_subscribers tps
INNER JOIN tb_sitemap ts
ON tps.lac=ts.lac2g
or tps.lac=ts.lac3g
AND tps.cellid=ts.ci2g
OR tps.cellid=ts.ci3g_850
OR tps.cellid=ts.ci3g_2100_1
OR tps.cellid=ts.ci3g_2100_2
OR tps.cellid=ts.ci3g_2100_3
INNER JOIN tb_bts tb
ON ts.site_id=tb.site_id
GROUP BY msisdn) msisdn
GROUP BY idbts
ORDER BY jumlah DESC
LIMIT 1 OFFSET x) AS tabelbts
END WHILE;
SELECT tableview;
END$$
我还将 x 变量放入tableview
查询中(单词“偏移 x”)。真的吗?请帮助我,并在此先感谢
解决方案
与您的问题无关,但您也需要解决一些问题。
- 您必须使用括号来强制正确的运算符顺序
现在你有A OR B AND C OR D
因为AND
有优先权你真的有
A OR ( B AND C ) OR D
相反,您需要
(A OR B) AND (C OR D)
或者您可以使用
IN
运算符来提高阅读能力INNER JOIN tb_sitemap ts ON tps.lac IN ( ts.lac2g, ts.lac3g ) AND tps.cellid IN ( ts.ci2g, ts.ci3g_850, ts.ci3g_2100_1, ts.ci3g_2100_2, ts.ci3g_2100_3 )
推荐阅读
- postgresql - 如何使用 postico 之类的 GUI 客户端从我的家庭操作系统连接到 postgres?
- java - 如果值为空/空或某些特定字符串,如何检查 JSP 变量并隐藏?
- python - 使用 edx 在 Windows 服务器 2012 操作系统上具有活动目录的 SSO。
- android - android - 改造 2 - 无法读取 json 数组并解析它
- kotlin - 设计选项卡中的 Android Studio 错误
- javascript - 如何从数组中给 div 随机背景颜色
- android - 如何在意图的帮助下打开活动托管的第 n 个片段?
- c# - 如何拆分具有逗号和空格组合字符的文本?
- apache-spark - 有没有办法使用jobtracker或spark application master确认我提交的spark作业是yarn-client还是yarn-cluster?
- ios - 如何在 Objective-C 和 Swift 中实现“didSelectButtonInCellAtIndexPath:”?