[英]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.