これは愚かな質問ですが、申し訳ありませんが、私はそれの周りに私の頭を得るように見えることはできません。私はかなりSQLに慣れています。この動作は、RやPandasなど、私が使用するのに慣れているのは変です。SQLで、なぜこのJOINがキー列を2回返すのですか?
基本的に2つの異なるデータベースに共通のキーuser_id
を持つ2つのテーブルがあります。私はすべての列に参加したい
SELECT * FROM db1.first_table t1
JOIN db2.second_table t2
ON t1.user_id = t2.user_id
偉大な、それは動作します。ただし、user_id
という2つの(同一の)列はありません。これは本当に重要なことではありませんが、私はpysparkでこれをやっていますが、結合したテーブルをフラットファイルにエクスポートしようとすると、2つのカラムが同じ名前を持つというエラーが発生します。これには回避策がありますが、なぜ誰かがなぜ返り値がで返ってくるのかを説明できるかどうかは不思議です。user_id
カラム。それは内部結合であるように見えるので、定義によって列は同一です。なぜそれは両方を返すだろうか?
副次的な質問として、この動作を回避する簡単な方法はありますか?
ありがとうございます!
"select *"は両方のテーブルのすべてのカラムを返すためです。あなたが制限する必要がある場合、明示的に定義するtable.columns – OldProgrammer
を使用しているため、あなたはそれが結合のすべてのテーブルのすべての列を返すことを意味します – Lamak
回避策? 'select *'を使うのは実際にはあまり良いことではないので、検索する列を常に定義する必要があります。それは回避策ではありません - それはあなたがそれを行うべきです! –