Как получить доступ к одному и тому же значению из выбора в другой части sql? - PullRequest
0 голосов
/ 31 марта 2020

Как получить доступ к одному и тому же значению из выбора в другой части 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 выше в '***'?

...