Google BigQuery(#standardSQLを使用)では、2つのテーブルの間に結合がある場合、固定プレフィックスを各テーブルのすべてのカラムに適用する必要があります。Google BigQuery:重複した名前を持つ結合テーブルのすべての列のプレフィックス
#standardSQL
WITH user AS (
SELECT "john" as name, "smith" as surname, 1 as parent
UNION ALL
SELECT "maggie" as name, "smith" as surname, 2 as parent
),
parent AS (
SELECT 1 as id, "john" as name, "doe" as surname
UNION ALL
SELECT 2 as id, "jane" as name, "smith" as surname
)
Userテーブル
+-----+--------+---------+--------+
| Row | name | surname | parent |
+-----+--------+---------+--------+
| 1 | john | smith | 1 |
| 2 | maggie | smith | 2 |
+-----+--------+---------+--------+
親テーブル
+-----+----+------+---------+
| Row | id | name | surname |
+-----+----+------+---------+
| 1 | 1 | john | doe |
| 2 | 2 | jane | smith |
+-----+----+------+---------+
この
SELECT u.*, p.* FROM user u JOIN parent p ON u.parent = p.id
のようなクエリ:ここ
シナリオですが、私はこのような構造を持っています
テーブルのフィールドに変更される場合は、私が編集するたびに必要になります私はこの
SELECT
u.name as user_name,
u.surname as user_surname,
p.name as parent_name,
p.surname as parent_surname
FROM user u JOIN parent p ON u.parent = p.id
+-----+-----------+--------------+-------------+----------------+
| Row | user_name | user_surname | parent_name | parent_surname |
+-----+-----------+--------------+-------------+----------------+
| 1 | john | smith | john | doe |
| 2 | maggie | smith | jane | smith |
+-----+-----------+--------------+-------------+----------------+
のようにテーブルのカスタムエイリアシングを実行しないようにしたい、次のエラー
Error: Duplicate column names in the result are not supported. Found duplicate(s): name, surname
を生成指定された接頭辞を持つ新しいフィールドを適用するためのステートメント(またはステートメント)したがって、固定列名を使用するこの方法は適切な方法ではありません。
クエリ演算子は、そこに記載されているようにテーブルを取得するために、接頭辞を自動的に適用する方法はありますか?結果に
SELECT u.* AS user_*, p.* AS parent_*
FROM user u JOIN parent p ON u.parent = p.id
ありがとうございますが、わかりましたが、理解しても残念ながら実行できないように、 –
のようにSTRUCTを使用する代わりにカスタムプレフィックスを使用する必要があります。私が言及したように - これは私が考えることができる最も近いものです。 :o) –