Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql和sqlserver检索前1条记录的通用查询_Mysql_Sql Server - Fatal编程技术网

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

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

我有一个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 ;
选择前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软件来更改查询。