2013-06-19 34 views
0

需要查找id的最大值,通過此值我需要讀取其他列的值。但它受另一列類型的影響。 我用這個SQL命令:在SQLCE中選擇更多具有MAX功能的列

"SELECT * FROM Table WHERE id = (SELECT MAX(id) FROM Table WHERE type = 1)" 

ID列是BIGINT類型,和類型是NCHAR。我試着用type ='1'來使用它,但同樣的問題。 錯誤是 「ID =」 節後

感謝您的回覆

編輯:

SqlCeCommand com = new SqlCeCommand(); 
if (LocalType == '1') { com = new SqlCeCommand("SELECT req_id FROM Requisition WHERE id = (SELECT MAX(id) FROM Requisition WHERE type = 1)", con); } 
else if (LocalType == '2') { com = new SqlCeCommand("SELECT req_id FROM Requisition WHERE id = (SELECT MAX(b.id) FROM Requisition AS b WHERE b.type <> 1)", con); } 

using (com) 
{ 
    SqlCeDataReader reader = com.ExecuteReader(); 
} 
+2

什麼是實際的錯誤信息? –

+0

我想你真正的表名不是表的權利? – Steve

+0

@MartinSmith:解析查詢時出錯。 [令牌行號= 1,令牌行偏移量= 44,令牌出錯=選擇] – Crooker

回答

2

要做到這一點,最簡單的方法是使用top。如果這是你真正的代碼,那麼你就需要「逃離」這個詞「表」,因爲它是一個保留字:

select top 1 t.* 
from [table] t 
where type = '1' 
order by id desc 
+0

它改變錯誤位置「top」與select * from table limit相同 我用整個代碼編輯原始帖子 – Crooker

+0

您使用的是哪個版本的CE?它真的會非常老嗎? –

+0

使用3.5版本 – Crooker

1

嘗試命名錶:

SELECT * 
FROM Table AS a 
WHERE id = (SELECT MAX(b.id) FROM Table AS b WHERE b.type = 1) 
0

對谷歌過了一會,發現版本3.5中的SQLCE支持SELECT TOP表達式,但與格式不同。它必須寫在括號內

SELECT TOP(1) * FROM MyTable