繁体   English   中英

使用php对一列(SQL Server 2005或更高版本)进行选择

[英]SELECT DISTINCT on one column (SQL Server 2005 or greater) using php

我已经尝试了stackoverflow此处提供的代码,但是仍然出现错误。 有人可以告诉我我在哪里误会吗? 谢谢! 这是我的代码:

$allOrdersFromToday = $Microinvest->MSelectList('SELECT * ROW_NUMBER() OVER (PARTITION BY Acct ORDER BY ID) AS RowNumber FROM Operations WHERE Date = "' . $todayDate . '" AND OperType = 2 ORDER BY Acct DESC) AS a', '*', 'a.RowNumber = 1');

应该输出为:

SELECT  *
FROM    (SELECT *,
                ROW_NUMBER() OVER (PARTITION BY Acct ORDER BY ID) AS RowNumber
         FROM   Operations
         WHERE  Date = "' . $todayDate . '" AND OperType = 2 ORDER BY Acct DESC) AS a
WHERE   a.RowNumber = 1

但我收到一个错误... :(

警告:mssql_query():消息:关键字“ SELECT”附近的语法不正确。 (严重性15)在第29行的/var/www/functions/MssqlLibry.php中

在大多数情况下,SQL Server不支持子查询中的order by 尝试这个:

SELECT  a.*
FROM (SELECT o.*,
             ROW_NUMBER() OVER (PARTITION BY Acct ORDER BY ID) AS RowNumber
      FROM Operations o
      WHERE  Date = "' . $todayDate . '" AND
             OperType = 2
     ) a
WHERE a.RowNumber = 1
ORDER BY a.Acct DESC;

此外,由于日期的格式,您可能会遇到问题。 您应该使用参数化查询,而不是将值替换为字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM