我收到以下错误.
[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]列'STATS.VisitorIP'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
我在两个选择列表中都使用了VISITORIP列.我在其中一个中使用了GROUP BY子句,所以我给它添加了VISITORIP.但是我没有在其他选择中使用GROUP BY子句,所以没有添加它.为什么我收到此错误?
SELECT S.VISITORIP, S.HTTPADDRESS, S.DATEENTERED
FROM STATS S
JOIN (SELECT S1.VISITORIP, MAX(S1.DATEENTERED) FROM STATS S1 WHERE DATEENTERED BETWEEN '" & OnlineTime & "' AND '" & NOW() & "') S1
ON S.VISITORIP = S1.VISITORIP AND S.DATEENTERED = S1.DATEENTERED
WHERE S.DATEENTERED BETWEEN '" &TIME& "' AND '" & NOW() & "'
GROUP BY S.VISITORIP, S.HTTPADDRESS, S.DATEENTERED
ORDER BY S.DATEENTERED DESC
Run Code Online (Sandbox Code Playgroud)
您需要嵌套子查询中的GROUP BY,因为您正在尝试为每个VISITORIP获取MAX DATEENTERED.VISITORIP存在于该子查询的SELECT中,因此您还需要GROUP BY,以便它返回每个visitorip的最新日期.
SELECT S.VISITORIP, S.HTTPADDRESS, S.DATEENTERED
FROM STATS S
JOIN (SELECT S1.VISITORIP, MAX(S1.DATEENTERED) FROM STATS S1 WHERE DATEENTERED BETWEEN '" & OnlineTime & "' AND '" & NOW() & "' GROUP BY S1.VISITORIP) S1
ON S.VISITORIP = S1.VISITORIP AND S.DATEENTERED = S1.DATEENTERED
WHERE S.DATEENTERED BETWEEN '" &TIME& "' AND '" & NOW() & "'
GROUP BY S.VISITORIP, S.HTTPADDRESS, S.DATEENTERED
ORDER BY S.DATEENTERED DESC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9518 次 |
| 最近记录: |