Как получить доступ к одному и тому же значению из выбора в другой части sql?
У меня есть таблица EconomicData со столбцами (int Region_Id (PK), int Attribute_Id (FK), цифра c Значение). пример:
1, 1, 10.9
2, 3, 12.8
3, 2, 30000
Он ищет атрибуты из другой таблицы, Атрибуты (Attribute_Id (PK), varchar Attribute_Name). пример:
1, "life_expectancy"
2, "median income"
3, "literacy_rate"
Сервер Spring Boot получает JSON и преобразует в объекты
class RegionData {
int regionId;
int lifeExpectancy;
int medianIncome;
int literacyRate;
}
Я пытаюсь взять каждое из полей в объекте RegionData и обновить или вставить новый Строка таблицы EconomicData, столбец Значение.
Я хочу сделать upsert (используя JdbcNamedParameterTemplate и MapSqlParameterSource). Если строка присутствует, то Обновить существующую строку, в противном случае Вставить новую строку.
MERGE EconomicData
USING ( SELECT :regionId, Attribute_Id FROM Attributes where Attribute_Name in
***(select Attribute_Name from Attributes)*** as Source (regionId, attributeId)
ON Region_Id = Source.regionId and Attribute_Id = Source.attributeId
WHEN MATCHED THEN UPDATE SET Value = :Value
WHEN NOT MATCHED THEN INSERT (Region_Id, Attribute_Id, Value)
VALUES (:Region_Id, :Value, (select Attribute_Id
FROM Attributes where Attribute_Name in ***(select Attribute_Name from Attributes)***));
Как я могу получить доступ к одному и тому же значению в обоих SELECT выше в '***'?