我不知道如何创建存储过程以及如何在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
查询中(单词“ offset x”)。真的吗?请帮助我,并预先感谢
答案 0 :(得分:1)
与您的问题无关,但您也需要修复一些问题。
现在您拥有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 )