有这样的一个运用:
根据添加的数据来获取数据的数据
例如insert into a(id,pro) values(1,”a”),(1,”a”)
insert into a(id,pro) values(2,”b”)
这样的添加了2条,本人想从这个添加的数据来获取b表的数量
本人现在只能是select * from 1 where pro=”a” limit 2
select * from b where pro=”b” limit 1
这样,假如a表insert很多的话,那select b表要消耗的资源就比较多了。b表有500万。
这个limit能不能用变量 例如limit if 或limit case when什么的
根据添加的数据来获取数据的数据
例如insert into a(id,pro) values(1,”a”),(1,”a”)
insert into a(id,pro) values(2,”b”)
这样的添加了2条,本人想从这个添加的数据来获取b表的数量
本人现在只能是select * from 1 where pro=”a” limit 2
select * from b where pro=”b” limit 1
这样,假如a表insert很多的话,那select b表要消耗的资源就比较多了。b表有500万。
这个limit能不能用变量 例如limit if 或limit case when什么的
解决方案
40
本人也查了一下,这个好像不能用变量,但可以考虑是用 动态语句,大致是这样的:
CREATE PROCEDURE GetData(_pro varchar(20),_limit int)
BEGIN
declare @a varchar(20);
declare @b int;
PREPARE s FROM “SELECT * FROM User WHERE pro=? LIMIT ?”;
set @a=_pro;
set @b=_limit;
EXECUTE s USING @a,@b;
DEALLOCATE PREPARE s;
END;
CREATE PROCEDURE GetData(_pro varchar(20),_limit int)
BEGIN
declare @a varchar(20);
declare @b int;
PREPARE s FROM “SELECT * FROM User WHERE pro=? LIMIT ?”;
set @a=_pro;
set @b=_limit;
EXECUTE s USING @a,@b;
DEALLOCATE PREPARE s;
END;