У меня есть две таблицы. Одним из них является простая строка/ID посмотреть:Обновление SQL с соединением?
StrTable:
str_key String 0 'a' 1 'b'
где строки являются уникальными. Другой является более сложным, и включает в себя разделяемых string_id
ValTable:
str_key other_key val 0 0 1.234 0 1 1.567 1 0 1.890
Теперь я хочу сделать обновление на ValTable, используя строку, которую я Lookup, чтобы получить str_key через StrTable. Простое обновление будет:
UPDATE ValTable SET val = 2.124 WHERE str_key = 0 AND other_key = 1 LIMIT 1
IF @@ROWCOUNT=0 INSERT INTO ValTable VALUES (0,1,2.124);
Так как я могу изменить это включить, глядя вверх str_key с некоторой строкой «а»? Я предполагаю, что мне нужно присоединиться, но я никогда не делал присоединения к обновлению. Или я могу просто добавить больше к моей статье where?
Вы не имеете DDL для таблиц, но при условии, что str_key и other_key составляют ПК для ValTable, есть причина того, что у вас есть «LIMIT 1»? Даже если это не ПК, кажется странным использовать LIMIT здесь –
Я не был уверен, приведет ли он к развертке всей таблицы без ограничения, но я полагаю, что она достаточно умна, чтобы знать, что составной ключ * * * и влияет только на одну строку. –