0

さて、「having」条件を含むサブクエリがあります。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))

4 つの列が返されるので明らかに失敗します :( どうすればよいですか?

更新: 選択するとsfd.idエラーが発生します: エラー 1054 (42S22): 不明な列 'sfd.StartTime' in 'having clause' 'having' の変更

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 に答える