在SQLCE中选择更多具有MAX功能的列

时间:2013-06-19 20:47:05

标签: c# sql sql-server-ce

需要找到id的最大值,并且通过这个值我需要读取其他列的值。但它受另一种列类型的影响。 我使用了这个sql命令:

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

ID列是bigint类型,类型是nc​​har。我尝试使用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();
}

3 个答案:

答案 0 :(得分:2)

最简单的方法是使用top。如果这是您的真实代码,那么您需要“转义”单词“table”,因为它是一个保留字:

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

答案 1 :(得分:1)

尝试命名表:

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

答案 2 :(得分:0)

在谷歌上一段时间后,发现版本3.5中的SQLCE支持SELECT TOP表达式,但与格式化有所不同。必须用括号

SELECT TOP(1) * FROM MyTable