繁体   English   中英

如何在 mysql 的查询中定义可选约束

[英]how should define an optional constraint in a query in mysql

我有一个简单的问题。 我想在 MySql 上写一个查询。 所以我写了这个存储过程来得到一些东西:

CREATE DEFINER=`root`@`%` PROCEDURE `attributes_fetchall`(p_origin_id bigint, p_status char(1))
begin
select * from attributes where status = p_status and origin_id = p_origin_id;
end

但我想在p_origin_id = nullp_origin_id = null status=p_status所有行。 我的意思是当origin_id = null时我可以得到这个查询:

select * from attributes where status = p_status

当 origin_id != null 返回此查询时:

select * from attributes where status = p_status and origin_id = p_origin_id;

我应该如何编写可以在一个查询中处理这两个的存储过程?

使用条件测试来检查使用哪个选择

CREATE DEFINER=`root`@`%` PROCEDURE `attributes_fetchall`(p_origin_id bigint, p_status char(1))
begin
if p_status is null then
 select * from attributes where status = p_status and origin_id is null;
else
 select * from attributes where status = p_status and origin_id = p_origin_id;
end if;
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM