フルネームの学生情報テーブルとファーストネームのリストがあります。Bigquery SQL SELECT WHEREフィールドには他のテーブルからの多くの単語が含まれています
full_names first_names
--------------- -------------
john adam smith john
jane anna doe jane
michael brown bob
私は、そのフルネーム最初の名前の長いリストのいずれかを含む学生を選択します。たとえば、John Adam Smith
には単語john
が含まれています。その行を選択します。 Michael Brown
は名前と一致しないので、私はそれを望んでいません。
私はこれを行うことができましたが、それはクレイジー非効率 300 +の名前を入力しています。第二のテーブルfirst_names
に名前のリストを作った、第二にあった最初のテーブルから名前を選択しようとした - 私はを試してみた何
SELECT names
FROM full_names
WHERE names CONTAIN 'john'
OR names CONTAIN 'jane'
OR names CONTAIN 'bob'
...
(300 more rows)
。
SELECT names
FROM full_names
WHERE names CONTAINS
(SELECT names
FROM first_names);
はしかし、私はエラーを取得する:
Error: ELEMENT can only be applied to result with 0 or 1 row.
は、より良い方法はありますか?
ありがとうミハイル!サンプルは正常に動作し、徹底した説明に感謝します。残念ながら、私は支払い階層を最初にアップグレードしなければならないので、私の完全なデータセット上で実行することはできません。それほど問題がなければ、このクエリを小さくする方法はありますか?もう一度、あなたの助けに感謝します! –
あなたはどんな問題がありますか?エラーメッセージ?どうか明らかにしてください。請求は、クエリに含まれるデータの量によって異なります。したがって、コストを最小限に抑えるために使用する列のみを使用する必要があります。 –
「エラー:クエリが第1層のリソース制限を超えました。私は300人の名字と2700万のフルネームを持っています。BQフリー層にまだ300ドルのクレジットが残っているので、なぜこのクエリが進まないのか分かりません。編集:はい、私はコストを最小限に抑える必要がある列を使用しています。 –