MYSQL 存储过程 取得一个表的查询结果

我是很想百度的,但是都不知道怎么概括这个问题,存储过程我学得很浅。
需要查询一个表,取得某一列的所有ID值,这个值要用来构建一个查询语句。
我就是不知道怎么才能取到这些ID值的问题。

第1个回答  推荐于2018-09-27
假设A表有3个字段,ID, DATA1,DATA2
简单的话可以不使用存储过程,比如:
select * form A where ID in (select ID from A where DATA1 between 0 and 100)

如果你的应用比较复杂,在嵌套中还有复杂的运算,存储过程可以如下例子:
CREATE PROCEDURE test(in_start int,in_end int)
BEGIN
DECLARE ids TEXT;
select GROUP_CONCAT(ID) into ids from A where DATA1 between in_start and in_end;
select * from A where FIND_IN_SET(ID,ids) > 0;
END
注: in_start, in_end是DATA1的筛选范围。 后面一个select直接返回一个表

直接用SQL和使用存储过程各有利弊,存储过程在你使用大量查询及SQL运算的时候效率很高,而且存储过程一旦写入数据库会被自动编译运行速度比较快,而SQL是每次执行都需要被编译一次的。但是存储过程的调试比较麻烦,不像你使用编程语言和SQL的时候可以单步调试。而且如果没有熟练掌握存储过程的效率优化情况下,使用存储过程可能比使用SQL更慢。本回答被提问者和网友采纳

如何创建MySQL存储过程可以返回一个表类型的数据
首先需要知道“另一个存储过程”的结果集的所有列的类型。假设“另一个存储过程”的名字是sp1,没有参数,返回的结果集共3列,全部为int型,那么“存储过程”里添加一个与结果集列数相同的临时表或表变量用于接收“另一个存储过程”的结果集 如下 CREATE PROCEDURE sp2 AS DECLARE @t table(a int,...

MYSQL 存储过程能返回结果集吗
可以,存储过程只是把你的查询语句形成一个固定的格式,这样你要查询的时候就不用每次都执行查询语句了,sql在执行的时候都会将你的sql语句转换为字节码,然后机器才能运行,存储过程就节省了这一步,已经形成了字节码,所以速度才会快,特别是执行次数比较多的时候,可以节省很多时间 ...

MySQL怎么写存储过程查询某个表的某一条记录,并把这条记录的所有列名对...
1.如果你是对一张确定的表(提前已经知道表结构)进行这样的处理,那就查询出来一条记录,通过Mysql的字符串拼接函数CONCAT,按照JSON格式,慢慢的拼一个字符串,最后通过select这个字符串返回这个字符串就行了。2.如果之前你并不知道,这个表的结构,甚至你根本不知道自己要处理的是那张表,那么存储过程...

深入MySQL中查看存储过程详情mysql查看存储过程
首先,可以使用show create procedure ‘procedure-name’语句或show procedure status、information_schema.routines表来查看存储过程的创建语法以及存储过程的状态:查看某存储过程的创建语法 show create procedure test_procedure;查看有哪些存储过程以及它们的状态 show procedure status;另一种方法...

mysql存储过程怎么把一个表的数据取模分给不同的表?
要将一个表的数据按特定条件进行取模并分发到不同的表中,可编写存储过程实现此功能。以将数据按照id取模分配到两个目标表为例,下面的示例展示了存储过程的编写。首先定义变量:done表示循环结束标志,mod_num表示取模结果,cur表示游标。接着使用DECLARE CONTINUE HANDLER设置游标的异常处理方式。使用OPEN...

mysql如何查询一个表里,同一字段不同条件数据数量?
输出结果:sql如下:SELECTT.KEFU,COUNT( CASE WHEN T.FLAG = '1' THEN T.ID END ) 本月成交,COUNT( CASE WHEN T.FLAG = '0' THEN T.ID END ) 本月预约,COUNT(CASEWHEN T.FLAG = '1' AND DATE_FORMAT( T.DATE, '%Y%m%d' ) = DATE_FORMAT( NOW(), '%Y%m%d' )THEN T.ID...

mysql 函数怎么返回一个表
mysql 函数怎么返回一个表 用存储过程算了,函数不能返回一个值,如果要返回多值的话,那就返回一个table,用存储过程同样能达到效果 CREATE PROCEDURE `goodcheck`( in xxx int in xxx ... out xxx .. out xxx char ) begin select sum(productstockinfo.num) into produc.

mysql 从动态表名中查询数据
使用存储过程,把表名作为参数传进来。CREATE PROCEDURE proName TableName varchar(50)AS DECLARE @SelectText varchar(500)Set @SelectText = 'SELECT * FROM ' + @TableName exec (@SelectText)你要的是这个么?那直接写:string tablename=???string strSql="select * from '"+tablename+"'...

mysql中的存储过程能返回数组么
mysql中要获得存储过程的返回值,可以增加一个out参数,用来返回。mysql中存储过程的例子:CREATE PROCEDURE addvoucher (IN userid INT,IN voucherid INT,OUT result INT )BEGIN SELECT endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,isdead_a := isdead FROM t_voucher...

在mysql中怎样设计一个存储过程,根据"学号"返回成绩表中平均成绩在60...
create procedure type(in shuruxuehao VARCHAR(20),out shuchuxuefen int(11))BEGIN set shuchuxuefen = 0;set @num = 0;set @xuefen = 0;select sum(chengji1 +chengji2 + ... + chengjiN )\/ n as num,xuefen into num, @xuefen from table where xuehao = shuruxuehao;\/*...

相似回答