mysql和sqlserver检索前1条记录的通用查询
我有一个sql查询,它在sql Server中运行得非常好,用于获得特定供应商提供的商品的最后购买率,如下所示:mysql和sqlserver检索前1条记录的通用查询,mysql,sql-server,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
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 ;
选择前1个费率
来自TXPurchaseDetail
其中CompanyCode=200
和VoucherSeries='INPURSCR'
供应商代码=1042
项目代码=1521
如果“top1”只是指返回第一行,那么“LIMIT 1”就是您在MySQL中所追求的内容。在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;
选择费率
来自TXPurchaseDetail
其中CompanyCode=200
和VoucherSeries='INPURSCR'
供应商代码=1042
项目代码=1521
由于两个平台使用不同的语法来限制行,所以我建议您在每种情况下考虑实现一个存储过程,现在存储过程代码可以使用适当的语法,并且应用程序只调用存储过程——它不必关心它是调用MySQL还是SQL Server。这是使用存储过程的主要好处之一,而不是将应用程序代码与特殊SQL混淆。从何处执行此查询(PHP、ASP.net、某些SQL控制台等)?正如我在回答中已经指出的那样,MSSQL和MySQL使用不同的语法来限制结果的数量,因此您可以根据正在执行查询的应用程序中使用的DBMS软件来更改查询。