[英]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.