Как это возможно, что этот оператор выбора работает, но этот оператор обновления не работает в VFP 9?
обзор
Я пытаюсь написать select
Заявление в Visual Fox Pro 9 (VFP9) для обновления строки (и, в конечном счете, нескольких других записей), я сначала написал оператор select, и он работал отлично, я получил ожидаемый результат.
Но я немного новичок в синтаксисе VFP9, а кто не будет в 2013 году? Я ожидаю UPDATE
который содержит мой select
работать немного как UPDATE INNER JOIN
в реальном не фоксовом SQL.
Мое утверждение select, оно отлично работает.
SELECT temptable3.constate FROM temptable3, prw22001 ;
WHERE prw22001.empno = temptable3.empno AND temptable3.pssn = prw22001.ssn AND temptable3.empno='5202' AND temptable3.constate <> prw22001.stateid AND prw22001.procyear='2012'
Моя инструкция по обновлению (которая содержит мою инструкцию выбора и не работает):
UPDATE prw22001 ;
SET prw22001.stateid = SELECT temptable3.constate FROM temptable3, prw22001 ;
WHERE prw22001.empno = temptable3.empno AND temptable3.pssn = prw22001.ssn AND temptable3.empno='5202' AND temptable3.constate <> prw22001.stateid AND prw22001.procyear='2012'
Я получаю ошибку, которая читает Microsoft Visual FoxPro Command contains unrecognized phrase/keyword.
Я не понимаю, о чем идет речь, и хорошие 4/5 моего запроса - это мое первоначальное утверждение выбора.
1 ответ
Решение
Преобразовать ваше утверждение так:
UPDATE prw22001 ;
SET prw22001.stateid = temptable3.constate ;
FROM temptable3, prw22001 ;
WHERE prw22001.empno = temptable3.empno AND temptable3.pssn = prw22001.ssn AND temptable3.empno='5202' AND temptable3.constate <> prw22001.stateid AND prw22001.procyear='2012'