繁体   English   中英

按值获取记录或获取最新记录

[英]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语句来获取指定versionversion为空,我想从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.

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