检索具有“有”条件的子查询中的单个列

时间:2014-03-28 14:19:07

标签: mysql in-subquery

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

所以我有子查询

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):'having子句'中的未知列'sdd.StartTime' 改变'有'

1 个答案:

答案 0 :(得分: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子句。这是你想要的吗?