Diplay Lastest表的记录 - SQL MAX()函数

时间:2017-02-15 14:39:54

标签: php sql sql-server

最终代码:

$querySelect = "SELECT A.IdCliente, A.Data, A.IdPontos 
                FROM $tabela AS A INNER JOIN ( SELECT MAX(IdPontos) [ID] 
                FROM $tabela 
                WHERE IdCliente = $cliente2 AND IdPontos = $voucher ) 
                AS B ON B.ID = A.IdPontos
                ";

$resultSelect = mssql_query($querySelect) or die('Erros querying MSSQL SELECT');

//Show result
    while ( $record = mssql_fetch_array($resultSelect) )
{
    echo $record["IdCliente"] . ' - Código do Cliente<br />';
    echo $record["IdPontos"] . ' - Número do voucher do cliente<br />';
}

我试图在表格中显示最新的记录(行),直到现在,我才能获得特定用户的所有记录。我使用了MAX()函数,但是出现了错误:

  

警告:mssql_query()[function.mssql-query]:message:Column&#39; Clt_cadPontosFidelidade.IdCliente&#39;在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。 (严重程度16)在第36行的/home/storage/c/60/21/allantoledo/public_html/NovoApp/resgatar.php中

我的代码:

$querySelect = "SELECT
            IdCliente, Data, MAX(IdPontos)
            FROM $tabela 
            WHERE IdCliente = $cliente2
            AND IdPontos = $voucher
           ";

而且我没有显示我的阵列的值,它们没有出现。

代码:

$resultSelect = mssql_query($querySelect) or die('Erros querying MSSQL SELECT');

//Show result
    while ( $record = mssql_fetch_array($resultSelect) )
{
    echo $resultSelect["IdCliente"] . ' - Código do Cliente<br />';
    echo $resultSelect["IdPontos"] . ' - Número do voucher do cliente<br />';
}

谢谢!

2 个答案:

答案 0 :(得分:1)

使用order bytop 1

SELECT TOP 1 a.*
FROM $tabela a
WHERE a.IdCliente = $cliente2 AND a.IdPontos = $voucher
ORDER BY IdPontos DESC;

我觉得很奇怪你只有IdPontos的一个值。也许还有另一个领域确定&#34;最后一行&#34;。

答案 1 :(得分:1)

如果使用没有group by的聚合函数,则假定它适用于所有行。因为您已添加了IdCliente和Data列,所以需要一个分组:

        SELECT IdCliente, Data, MAX(IdPontos)
        FROM $tabela 
        WHERE IdCliente = $cliente2
        AND IdPontos = $voucher
        GROUP BY IdCliente, Data

但这会显示超出您需要的行数。所以你可以加入IdPontos获取这些,或者按照建议使用TOP 1。