Я пытаюсь обновить столбец со счетчиком (+1) на основе столбца в одной и той же таблицы сопоставления, что другой, я попытался ниже:Oracle SQL Update набор
UPDATE table1 p
SET (p.f_dup_count)= ((p.f_dup_count) + 1)
WHERE (SELECT a.f,
p.f
FROM table2 a,
table1 p
WHERE a.f = p.f
AND a.a_id = p.a_id)
Это в настоящее время приводит к :
Error at Command Line:28 Column:40 Error report: SQL Error: ORA-00936: missing expression 00936. 00000 - "missing expression"
*Cause:
*Action:
очень полезным при условии, раствор для этого, как показано ниже:
UPDATE table1 SET р f_dup_count = (случай, когда существует (SELECT 1 ОТ таблица2 в ГДЕ a.f = p.f И a.a_id = p.a_id ) затем f_dup_count + 1 еще 0 конец);
Однако, теперь я проверил это, я понял, что время обработки довольно высокое. У меня есть способ сделать это как «создать таблицу как выбор», чтобы повысить производительность?
спасибо,
Адам
где положение должно быть «где поле/состояние = поле/состояние» ... ваше утверждение здесь не хватает в = .. . где указано выражение select = = (или какое поле в таблице 1 равно полям в подзапросе). Если вы разделяете то, что вы пытаетесь выполнить, я уверен, что мы можем сделать переписку для вас. Боковое примечание ... лучше не хранить счеты самостоятельно в базе данных ... лучше иметь оператор, который запускает инкрементный счет на лету. – Twelfth
Я предполагаю, что вы хотите предикат «EXITS», но сообщение об ошибке понятное и легко найти ответ по коду ошибки – jbaliuka