0

私は別の部分を間違ってやっていたので質問を変更しました。私の目標は、平均が4以上の映画の年情報を更新することですが、平均でそれらをリストすることはできませんでした:(

/* Delete the tables if they already exist */
drop table if exists Movie;
drop table if exists Reviewer;
drop table if exists Rating;

/* Create the schema for our tables */
create table Movie(mID int, title text, year int, director text);
create table Reviewer(rID int, name text);
create table Rating(rID int, mID int, stars int, ratingDate date);

/* Populate the tables with our data */
insert into Movie values(101, 'Gone with the Wind', 1939, 'Victor Fleming');
insert into Movie values(102, 'Star Wars', 1977, 'George Lucas');
insert into Movie values(103, 'The Sound of Music', 1965, 'Robert Wise');
insert into Movie values(104, 'E.T.', 1982, 'Steven Spielberg');
insert into Movie values(105, 'Titanic', 1997, 'James Cameron');
insert into Movie values(106, 'Snow White', 1937, null);
insert into Movie values(107, 'Avatar', 2009, 'James Cameron');
insert into Movie values(108, 'Raiders of the Lost Ark', 1981, 'Steven Spielberg');

insert into Reviewer values(201, 'Sarah Martinez');
insert into Reviewer values(202, 'Daniel Lewis');
insert into Reviewer values(203, 'Brittany Harris');
insert into Reviewer values(204, 'Mike Anderson');
insert into Reviewer values(205, 'Chris Jackson');
insert into Reviewer values(206, 'Elizabeth Thomas');
insert into Reviewer values(207, 'James Cameron');
insert into Reviewer values(208, 'Ashley White');

insert into Rating values(201, 101, 2, '2011-01-22');
insert into Rating values(201, 101, 4, '2011-01-27');
insert into Rating values(202, 106, 4, null);
insert into Rating values(203, 103, 2, '2011-01-20');
insert into Rating values(203, 108, 4, '2011-01-12');
insert into Rating values(203, 108, 2, '2011-01-30');
insert into Rating values(204, 101, 3, '2011-01-09');
insert into Rating values(205, 103, 3, '2011-01-27');
insert into Rating values(205, 104, 2, '2011-01-22');
insert into Rating values(205, 108, 4, null);
insert into Rating values(206, 107, 3, '2011-01-15');
insert into Rating values(206, 106, 5, '2011-01-19');
insert into Rating values(207, 107, 5, '2011-01-20');
insert into Rating values(208, 104, 3, '2011-01-02');

これらはテーブルです。

4

4 に答える 4

1

質問で例を書いた方法では、フィールドの文字列値の最後に文字列「25」を追加します。また、数値フィールドではなく、文字列(テキスト)であるフィールドでのみ機能します。あなたの例は、例えば「1000」の値を持つフィールドを「100025」に変更します。おそらくやりたいことは、数値に追加することです。例の単一引用符を削除するだけで完了です。

UPDATE tableName 
SET fieldName = fieldName + 25

特定の値をターゲットにする必要がある場合は、基準の上の例の最後に次のように追加します。

WHERE fieldName < 1000

変更は、基準に一致するレコードにのみ行われます。

お役に立てれば!;)

編集:OPの変更された質問にはもう関係ありません...明確にするために質問を変更するだけで、その意味を完全に変更しないでください!AGRHHH !!!

于 2013-01-25T19:43:05.510 に答える
1

1つの特定の映画IDについて、次のクエリで平均評価を取得できます。

SELECT avg(stars)
FROM Rating
WHERE mID = ?

すべての映画を特定の平均評価で更新するには、上記をサブクエリとして使用します。

UPDATE Movie
SET year = year + 25
WHERE (SELECT avg(stars)
       FROM Rating
       WHERE Rating.mID = Movie.mID) >= 4
于 2013-01-25T22:02:21.793 に答える
0

コードはすべての行でを更新yearします。

ただし、特定の値が必要だと言ったように、句でそれらを指定する必要がありますWHERE

UPDATE mytable
 SET year = year + 25
 WHERE condition

condition可能性があります:

WHERE mypk > 100
于 2013-01-25T19:42:49.767 に答える
0
Update TargetTable
set targetColumn = somevalue
where PrimaryKey = somevalue

primaryKey がない場合は、行を一意に識別する方法を見つける必要があります。そうしないと、テーブル全体を更新する危険があります。

Update ステートメントでできることとできないことの多くをカバーするmsdn ページ。

編集:

Update TargetTable
set targetColumn = TargetColumn + somevalue

これにより、すべての行に25年が追加されます

于 2013-01-25T19:36:33.673 に答える