2013-04-16 21 views
1

我有一个DataTable,其中我有LCNo (string),AmmendmentNo (string)。我想找回这对于相应的LCNo使用MAX()函数进行SQL查询的条件和显示数据

例如具有最高AmmendmentNo行:

LCNO(123123123123) AmmendmentNo(0,1,2,3)

我想123和AmmendmentNo:具有LCNO的行3

select * from LCTable where LCNo= '12147001' AND MAX(AmendmentNo); 
+2

注意,因为你存储号码为字符串,AmendmentNo的最大值将是词法最大值,而不是数字值。例如:{'1','2','9','542'}的最大值将是'9'。 –

+0

nomendmend没有最大值将是直到10或更多,直到20 – Sam

回答

2

使用GROUP BY子句。这会给你所有LCNo以及其最高AmendmentNo

SELECT LCNo, MAX(AmendmentNo) AmendmentNo 
FROM LCTable 
GROUP BY LCNo 

但是如果你想要特定的LCNo,你可以简单地在下面使用。请记住,使用下面的查询只能得到一个LCNo

SELECT LCNo, MAX(AmendmentNo) AmendmentNo 
FROM LCTable 
WHERE LCNo = '12147001' 
3

为此,使用limittop或类似的东西:

select * 
from LCTable 
where LCNo= '12147001' 
order by AmendmentNo desc 
limit 1 

在SQL Server中,这将使用top

select top 1 * 
from LCTable 
where LCNo= '12147001' 
order by AmendmentNo desc 
+0

我试过这个“desc limit 1”,但是当它在管理面板中使用它的工作,但是当我在php代码中使用它dosent –