簡體   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