diff --git a/pkg/cloudcommon/db/metadataresource.go b/pkg/cloudcommon/db/metadataresource.go index 145ef3b688..3faac2d083 100644 --- a/pkg/cloudcommon/db/metadataresource.go +++ b/pkg/cloudcommon/db/metadataresource.go @@ -247,12 +247,16 @@ func (meta *SMetadataResourceBaseModelManager) GetExportExtraKeys(keys stringuti } func (meta *SMetadataResourceBaseModelManager) ListItemExportKeys(manager IModelManager, q *sqlchemy.SQuery, keys stringutils2.SSortedStrings) *sqlchemy.SQuery { + keyMaps := map[string]bool{} for _, key := range keys { if strings.HasPrefix(key, TAG_EXPORT_KEY_PREFIX) { tagKey := key[len(TAG_EXPORT_KEY_PREFIX):] - metaQ := Metadata.Query("obj_id", "value").Equals("obj_type", manager.Keyword()).Equals("key", tagKey).SubQuery() - q = q.LeftJoin(metaQ, sqlchemy.Equals(q.Field("id"), metaQ.Field("obj_id"))) - q = q.AppendField(metaQ.Field("value", key)) + if _, ok := keyMaps[strings.ToLower(tagKey)]; !ok { + metaQ := Metadata.Query("obj_id", "value").Equals("obj_type", manager.Keyword()).Equals("key", tagKey).SubQuery() + q = q.LeftJoin(metaQ, sqlchemy.Equals(q.Field("id"), metaQ.Field("obj_id"))) + q = q.AppendField(metaQ.Field("value", key)) + keyMaps[strings.ToLower(tagKey)] = true + } } } return q