[英]Get record by value or get last record
我试图找出是否有可能获得记录,如果有值,否则获取最后一条记录。 我目前有一个使用if
语句的解决方案,如下所示:
if (!empty($version)) {
$sql = "SELECT `version` FROM `versioning` WHERE `id`='$itemID' AND `version`='$version' ORDER BY `version` DESC LIMIT 1";
}else{
$sql = "SELECT `version` FROM `versioning` WHERE `id`='$itemID' ORDER BY `version` DESC LIMIT 1";
}
我的问题是:有没有办法在单个sql
语句中执行此操作,如果有,在单个语句中执行此操作的利弊是什么?
为了帮助澄清,我试图找出是否可以使用一个sql
语句而不是if
语句来获取指定version
或version
为空,我想从versioning
表中获取最新version
。
是的,您可以通过如下一条SQL来做到这一点
$version = (!empty($version))?$version:'%%';
$sql = "SELECT `version` FROM `versioning` WHERE `id`='$itemID' AND `version` LIKE '$version' ORDER BY `version` DESC LIMIT 1";
通过使用一行,如果您想更改sql中的条件或添加更多字段或添加另一个join语句,这将很有用,而您不必修改两条sql行
可能未使用ANSI SQL语句,但是您可以使用存储过程来传递参数,然后在您的应用程序代码中调用该过程,例如
create procedure usp_version (version varchar(10))
as
begin
if version is not null then
SELECT `version` FROM `versioning`
WHERE `id`='$itemID'
AND `version`='$version'
ORDER BY `version` DESC
LIMIT 1;
else
SELECT `version`
FROM `versioning`
WHERE `id`='$itemID'
ORDER BY `version` DESC
LIMIT 1;
end if;
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.