我试图找出是否有可能获得记录,如果有值,否则抓住最后一条记录。我现在有一个使用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
。
答案 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