[英]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 = null
时p_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.