Mysql 从表中获取数据

Mysql 从表中获取数据,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,我的数据库中有下表 CREATE TABLE `sms_pool` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ag_id` VARCHAR(20) NOT NULL, `sms_to` VARCHAR(15) NOT NULL, `template_name` VARCHAR(100) NOT NULL, `contents` VARCHAR(500) NOT NULL, `bulk_flag` VARCHA

我的数据库中有下表

CREATE TABLE `sms_pool` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `ag_id` VARCHAR(20) NOT NULL,
    `sms_to` VARCHAR(15) NOT NULL,
    `template_name` VARCHAR(100) NOT NULL,
    `contents` VARCHAR(500) NOT NULL,
    `bulk_flag` VARCHAR(1) NOT NULL,
    `file_name` VARCHAR(100) NULL DEFAULT NULL,
    `send_flag` VARCHAR(1) NOT NULL,
    `creation_date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `created_by` VARCHAR(20) NOT NULL,
    `modification_date` DATETIME NULL DEFAULT NULL,
    `modified_by` VARCHAR(20) NULL DEFAULT NULL,
    `processing_msg` VARCHAR(2000) NULL DEFAULT NULL,
    PRIMARY KEY (`id`),

);
我想写一个以“id”为输入的过程/函数

如果表中存在“id”,则应返回相应的行

如果'id'=NULL,那么它应该返回数据库中的所有行

注意:如果表中不存在“id”,则它应该返回所有行

我该怎么做?感谢您的帮助。 提前谢谢你你大概是说

select * from sms_pool
where :id = id OR :id is null;

第二种情况根本不可能发生,因为您已将id声明为NOTNULL。从id=:id或:id为null的任何_表中选择*?过程/函数可以简单地打开此游标并返回对它的引用。@e4c5请注意,如果表中不存在“id”,则它应该返回所有行。@Aleksej mysql。当:id不为null,但:id不在sms_池中时,这不会返回所有行。您需要或:id不在“从sms_池中选择id”或类似项中才能实现此目的。