#sql #sql-server #upsert #sql-merge
#sql #sql-сервер #upsert #sql-слияние
Вопрос:
Можно ли использовать несколько условий при слиянии SQL при условии создания уникального идентификатора вместо объединения?
Идентификатор компании местоположение магазина = уникальный идентификатор. Я не хочу создавать дополнительный объединенный столбец. Будет ли это работать? Если нет, то что может быть лучшим решением?
ON (target.CompanyId = source.CompanyId AND target.Storelocation = source.storelocation)
CompanyId StoreLocation StoreSQM
------------------------------------
12345 Chicago01 1650
12345 Chicago02 1985
12652 Milwaukee 1865
45846 Minneapolis 45845
MERGE dbo.storestbl AS target
USING stagingtbl AS source
**ON (target.CompanyId = source.CompanyId AND target.Storelocation = source.storelocation)**
WHEN MATCHED THEN
Do something
WHEN NOT MATCHED THEN
Do something
Комментарии:
1. ДА. Но ваша скобка неверна. Должно быть просто
ON target.CompanyId = source.CompanyId AND target.Storelocation = source.storelocation
2. @Squirrel В скобках нет ничего неправильного или незаконного. В документации есть несколько примеров такого использования.
3. мой плохой. Думал, я видел, что это было не в том месте.
4. @Squirrel, так что добавление и будет действовать как объединение и преобразовывать его в уникальный идентификатор, верно?
5.
AND
означает, что оба условия должны быть истинными.