pl_rawから新しい名前のgameにチームを読み込むには、この関数を作成する必要があります。 すべてのデータをpl_rawにします。さて...この機能のテーブルのデータを注文するために...void関数内の 'something'節のようなフィールドの場合 - Postgresql
CREATE OR REPLACE FUNCTION loadGames() RETURNS void AS $$
BEGIN
IF (SELECT * from pldata.pl_raw where venue = 'Away') THEN
INSERT INTO definitiu.game (date_game, home_team, away_team)
SELECT game_date, opposition_id,team_id from pldata.pl_raw;
ELSIF (SELECT * from pldata.pl_raw where venue = 'Home') THEN
INSERT INTO definitiu.game (date_game, home_team, away_team)
SELECT game_date, team_id, opposition_id from pldata.pl_raw;
END IF;
END; $$
LANGUAGE PLPGSQL;
関数compile、しかし、私はこの機能を実行するとPostgresはこのエラーを返す:
ERROR: subquery must return only one column LINE 1: SELECT (SELECT * from pldata.pl_raw where venue = 'Away') ^ QUERY: SELECT (SELECT * from pldata.pl_raw where venue = 'Away') CONTEXT: PL/pgSQL function loadgames() line 4 at IF
********** Error **********
ERROR: subquery must return only one column SQL state: 42601 Context: PL/pgSQL function loadgames() line 4 at IF
エラーメッセージは明白です: 'select'ステートメントの結果は、どこかに格納しなければなりません。 'select'は何を返しますか?あなたはすべての列を取得しているようです。 'if'ステートメントは、多数の列を持つ行のリストではなく、ブール式を予期します。あなたは正確に何をしようとしていますか? –
あなたがここで何をしようとしているのかは不明です。 'pl_raw'に入るデータをフィルタリングしようとしていますか?あるいは単に 'pl_raw'でデータを整理しようとしていますか?他のクエリのデータを整理しようとしているだけの場合は、その別のクエリで 'ORDER BY'を使うべきです。テーブルの順序は問題ではありません。 PostgreSQLは 'ORDER BY'がなくても好きな順番で行を返すことができます。 – jpmc26