我有一个SQL查询,它在SQL Server中完美运行,可以达到特定供应商提供的项目的最后购买率:
Select Top 1 Rate
From TXPurchaseDetail
Where CompanyCode = 200
And VoucherSeries = 'INPURSCR'
And SupplierCode = 1042
And ItemCode = 1521
And voucherdate <= '2011/05/25'
Order By voucherdate desc, vouchernumber desc ;
现在,我正在转换整个应用程序,它将在sql server和mysql中运行。在mysql中,'TOP'参数不起作用。
如何让它在两个数据库服务器上运行?请帮忙。
此致 Vaishu
答案 0 :(得分:1)
在mysql中你使用LIMIT。然后,此查询将写为:
Select Rate
From TXPurchaseDetail
Where CompanyCode = 200
And VoucherSeries = 'INPURSCR'
And SupplierCode = 1042
And ItemCode = 1521
And voucherdate <= '2011/05/25'
Order By voucherdate desc, vouchernumber desc LIMIT 1;
最后请注意LIMIT 1
因此,您不能对MSSQL SERVER和MySQL都进行单一查询,因为两者都使用不同的语法将结果集限制为仅一行。
答案 1 :(得分:0)
如果“Top 1”只是意味着返回第一行,那么“LIMIT 1”就是你在MySQL中所追求的。
答案 2 :(得分:0)
由于这两个平台使用不同的语法来限制行,我建议你考虑在每种情况下实现一个存储过程,现在存储过程代码可以使用适当的语法,而应用程序只调用存储过程 - 它不会必须要关心它是否正在调用MySQL或SQL Server。这是使用存储过程的主要好处之一,而不是使用ad hoc SQL来填充应用程序代码。