【发布时间】:2016-06-12 07:37:22
【问题描述】:
我有一个很长的查询,当我执行时抛出异常。 查询:
SELECT HostID,HostName,RackID,HostTypeID,DomainName,RackNumberOfHeightUnits,RackStartHeightUnits
FROM tHosts, tDomains
WHERE tHosts.DomainID=tDomains.DomainID AND (RackID IN ( SELECT tRacks.Name,tRacks.RackID,tRacks.SiteID,tRacks.Description,NumberOfHeightUnits
FROM tDomains, tSites, tRacks
WHERE tDomains.AccountID= tSites.AccountID
AND tSites.SiteID = tRacks.SiteID
AND tSites.SiteID = 2
AND tDomains.AccountID=1 )
AND SiteID IN (SELECT SiteID FROM tSites WHERE SiteID IN (SELECT SiteID FROM tSites WHERE AccountID=1)))AND AccountID=1
这里的查询正在完成:
SELECT tRacks.Name,tRacks.RackID,tRacks.SiteID,tRacks.Description,NumberOfHeightUnits
FROM tDomains, tSites, tRacks
WHERE tDomains.AccountID= tSites.AccountID
AND tSites.SiteID = tRacks.SiteID
AND tSites.SiteID = 2
AND tDomains.AccountID=1
**错误:**当不使用EXISTS引入子查询时,选择列表中只能指定一个表达式。
提前谢谢。
【问题讨论】:
-
将
AND (RackID IN ( SELECT tRacks.Name,tRacks.RackID,tRacks.SiteID,tRacks.Description,NumberOfHeightUnits更改为AND (RackID IN ( SELECT tRacks.RackID -
第一个提示:使用明确的
join语法。 @artm 是对的,但看起来您还需要来自tRacks的数据,在这种情况下,您应该将join它添加到您的外部查询中。此外,这不是一个长查询,实际上很短。
标签: sql sql-server exists