子サブテーブルがresult
としましょう。サブテーブルを更新する
SELECT school, grade
FROM (SELECT school, grade
FROM simulated_records
LIMIT 10) as result
このサブテーブルの列を更新するにはどうすればよいですか?私は試しました:
UPDATE result
SET grade = 'A'
...私はエラーが発生します。
子サブテーブルがresult
としましょう。サブテーブルを更新する
SELECT school, grade
FROM (SELECT school, grade
FROM simulated_records
LIMIT 10) as result
このサブテーブルの列を更新するにはどうすればよいですか?私は試しました:
UPDATE result
SET grade = 'A'
...私はエラーが発生します。
sub * choose *は一時的なものです。更新することはできません。あなたはtemporary table
CREATE TEMP TABLE temp_grades AS
SELECT school, grade FROM simulated_records;
UPDATE temp_grades SET grade = 'A';
EDITをしたいように聞こえる:あなたのコメントを再:上記の副選択を使用して、テーブル操作からUPDATEを使用しています
UPDATE simulated_records
FROM (SELECT id FROM simulated_records WHERE school='Yale' LIMIT 10) AS result
SET grade='A'
WHERE id = result.id
RETURNING *;
EDIT 2:第二のコメントについて:
をあなたは誤植をしていないと仮定して、古いバージョンを持っている可能性があります。
UPDATE simulated_records SET grade = 'A' WHERE id IN
(SELECT id FROM simulated_records WHERE school = 'Yale' LIMIT 10);
実際に私がしたいのは更新です特定の基準を満たす元のテーブルの最初のn個の要素は、学校は「Yale」です。何か案が? – user1072706
がもっと明確になっていますが、元の*テーブルを恒久的に変更したいのですか? – SpliFF
はい、元のテーブルを永久に修正したい – user1072706
名前付きサブセレクトはテーブルではありません。 simulated_recordsテーブルを直接更新します。 – tawman
可能な複製[サブクエリを使ってポストグルでテーブル行を更新する](http://stackoverflow.com/questions/6256610/updating-table-rows-in-postgres-using-subquery) – bernie