我有一个针对SQL Server的jsp运行的select语句(之前使用MySql没有问题) .
添加了TOP 1,因为否则SQL Server会关注order by子句(但仅在jsp中显示结果时,而不是在SQL Server Management Studio中运行查询时) .
此查询在SQL Server Management Studio中正常运行
SELECT TOP 1
alerts.id,
alerts.ts,
asset_firstname,
asset_lastname,
assetid,
alerttype.name,
node.zonename,
node.ipaddress,
node.zonegroupid
from
alerts, asset, alerttype, node, alertrules
where
ack=0 and
alerts.nodeid = node.id and
alerts.alerttypeid = alerttype.id and
alertrules.alerttypeid = alerts.alerttypeid and
alerts.assetid = asset.id and
alerts.alerttypeid = 1 and
asset.id=1157 and
alertrules.userid = 1
order by alerts.ts desc
但是,当在jsp中运行时,它返回“列alerts.ts在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中” .
我不希望alert.ts聚合或分组,因此'正确'选择语句 .
如果我删除TOP 1或alerts.ts desc,查询返回错误的行(最早的而不是最新的记录)
转换什么应该是简单的基本SQL命令,以便它们与SQL Server正常运行是一个噩梦 .
任何想法都赞赏 .
关心拉尔夫
1 回答
(我写这个作为答案,因为评论会很乱)你使用旧式连接,并进行冗余检查 . 也许这会产生影响(不确定,因为它似乎是与JSP相关的问题):