0

好吧,我有一个包含“有”条件的子查询。所以我必须在select子句中添加条件中的参数,对吗?

所以我有子查询

SELECT sfd.id, sfd.StartTime, sfd.EndTime, sd.StartTime 
FROM ssp.SessionFloatData sfd, ssp.SessionData_daily sd 
WHERE Name = 'nsrserverhost' AND Parameter = 'storagenode' 
AND sd.id = sfd.id 
HAVING (sfd.StartTime <= sd.StartTime AND sfd.EndTime >= sd.StartTime)

但实际上我只对第一列感兴趣:我只想检索id.

我的整个声明的摘录是

WHERE sfd.id IN (SELECT sfd.id, sfd.StartTime, sfd.EndTime, sd.StartTime 
...
                HAVING (sfd.StartTime <= sd.StartTime AND sfd.EndTime >= sd.StartTime))

当返回四列时明显失败了:(我能做什么?

更新:选择只会sfd.id导致错误:ERROR 1054 (42S22): Unknown column 'sfd.StartTime' in 'having Clause' 更改 'have'

4

1 回答 1

1

我不明白你想做什么。HAVING 子句仅在与 GROUP BY 子句结合使用时使用。在你的情况下,我想你可以这样做:

SELECT sfd.id
FROM ssp.SessionFloatData sfd, ssp.SessionData_daily sd 
WHERE Name = 'nsrserverhost' AND Parameter = 'storagenode' 
AND sfd.StartTime <= sd.StartTime AND sfd.EndTime >= sd.StartTime
AND sd.id = sfd.id 
GROUP BY sfd.id

所以 HAVING 上的内容被传递给 WHERE 子句。这是你想要的吗?

于 2014-03-28T14:26:17.200 回答