2015-08-28 75 views
1

我在此查詢MySQL查詢不工作,因爲它應該

SELECT `version` FROM filescontent WHERE `fileID`=(SELECT `fileID` FROM files WHERE `fileName`= 'file1.jpg') ORDER BY `fileID` DESC LIMIT 1 

的問題是,如果不命令的結果下降。結果是在數據庫中找到的第一個是'1'。

+0

,你必須給他們 – Hearner

+0

鏈接,可能是因爲您在您的查詢,其中只有它的工作有「LIMIT 1」並限制結果爲一行 – RedSonja

+0

我需要限制它,因爲在ID 1我有版本1,2,3我必須得到ID1的第三個版本 – Alex

回答

1

原因是因爲你正在使用LIMIT 1.因此,有1條記錄,你怎麼能期望它在下降。

你可以嘗試刪除限制1,然後檢查

SELECT `version` FROM filescontent 
WHERE `fileID`=(SELECT `fileID` FROM files WHERE `fileName`= 'file1.jpg') 
ORDER BY `fileID` DESC 

另外,作爲Hearner曾建議你可以嘗試使用JOIN這樣的錶鏈接:

SELECT `version` 
FROM filescontent join files using(fileID) 
WHERE `fileName`= 'file1.jpg' 
ORDER BY `fileID` DESC 

編輯:

SELECT version FROM filescontent 
WHERE fileID=(SELECT fileID FROM files 
       WHERE fileName= 'file1.jpg') 
ORDER BY version DESC LIMIT 1 
+0

我需要限制它,因爲在ID 1我有版本1,2,3,我必須選擇ID1的第三個版本 – Alex

1

以下用法查詢-

SELECT version 
FROM filescontent 
WHERE fileID= 
(
SELECT fileID 
FROM files WHERE fileName= file1.jpg 
) 
ORDER BY version DESC LIMIT 1 

如果您正在使用2臺甚至更好的查詢將是─

SELECT `version` 
FROM filescontent fc join files fl on fl.fileid=fc.fileid 
WHERE `fileName`= 'file1.jpg' 
ORDER BY `version` DESC limit 1; 
+0

有道理! +1 –

+0

什麼是fc和fl? – Alex

+0

這些是表別名..你可以使用表名也...但別名將有助於避免重複長名稱一次又一次.... –

相關問題