通用查询mysql和sqlserver来检索前1条记录

时间:2011-09-15 11:46:02

标签: mysql sql-server

我有一个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

3 个答案:

答案 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来填充应用程序代码。