好吧,我有一个包含“有条件”的子查询。所以我必须在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'
改变'有'
答案 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子句。这是你想要的吗?