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

时间:2015-09-08 13:54:59

标签: php mysql

我试图找出是否有可能获得记录,如果有值,否则抓住最后一条记录。我现在有一个使用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为空我想要从version表中获取最后versioning

2 个答案:

答案 0 :(得分:1)

是的,您可以通过以下

之类的SQL执行此操作
$version = (!empty($version))?$version:'%%';
$sql = "SELECT `version` FROM `versioning` WHERE `id`='$itemID' AND `version` LIKE '$version' ORDER BY `version` DESC LIMIT 1";

通过使用一行,如果您想更改sql中的条件或添加更多字段或添加另一个连接语句,它会很有用 ,,,所有这一切你不必修改两个SQL行

答案 1 :(得分:0)

可能没有使用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