首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Select语句使SQL Server失败

问Select语句使SQL Server失败
EN

Stack Overflow用户
提问于 2018-08-29 18:02:33
回答 1查看 178关注 0票数 0

我有一个针对SQL Server的select语句在jsp中运行(以前使用MySql没有问题)。

添加前1是因为SQL Server抱怨order by子句(但仅当在jsp中显示结果时,而不是在SQL Server Management Studio中运行查询时)。

此查询在SQL Server Management Studio中运行良好

代码语言:javascript
复制
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子句中”。

我不想让alerts.ts聚合或分组,因此使用了“正确的”select语句。

如果我删除TOP 1或alerts.ts desc,查询将返回错误的行(最早的记录而不是最新的记录)

事实证明,转换本应简单明了的基本SQL命令以使其在SQL Server中正常运行是一场噩梦。

任何想法都很感谢。

致敬拉尔夫

EN

回答 1

Stack Overflow用户

发布于 2018-08-29 18:13:38

(我写这篇文章是为了回答,因为作为注释会很混乱)你正在使用旧风格的连接,并且有多余的检查。也许这会有所不同(不确定,因为这似乎是与JSP相关的问题):

代码语言:javascript
复制
SELECT TOP(1)
  alerts.id, alerts.ts,
  asset_firstname,
  asset_lastname,
  assetid,
  alerttype.name,
  node.zonename,
  node.ipaddress,
  node.zonegroupid
from alerts
 inner join asset on alerts.assetid = asset.id 
 inner join alerttype on alerts.alerttypeid = alerttype.id
 inner join node on alerts.nodeid = node.id
 inner join alertrules on alertrules.alerttypeid = alerts.alerttypeid
where ack=0 and 
alerts.alerttypeid = 1 and
asset.id=1157 and
alertrules.userid = 1
order by alerts.ts desc; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52074734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档