この質問を1つの文にまとめるのは難しいです。私は2つのテーブルを持っています - そのうちの1つは、外部フィードによって自動的かつ定期的に更新されます。 2番目の表には、2番目の表の一部の行に固有のキーで識別される追加情報があります。ここに例があります:SELECTで2つのテーブルを1つにまとめるにはどうすればよいですか?
Table1 id: int PRIMARY KEY channel: varchar(255) UNIQUE KEY name: varchar(255) NOT NULL verified: tinyint(1) NOT NULL Table2 id: int PRIMARY KEY channel: varchar(255) UNIQUE KEY extra_info: varchar(255)
表1はメインテーブルです。これは実際に選択されているテーブルです。 Table2にあるフィールド(IDとチャンネル以外)を選択時にTable1に移動すると、Table1にあるTable2のすべての行が選択時にマージされるようになります。
は例えば、私はこの2つのテーブル内の情報は、私は続行する最速の方法は何であるか思ったんだけど、この
[{
"id": 5,
"channel": "bkids2",
"name": "Bkid",
"verified": true,
"extra_info": "Some extra information added using Table2"
},
...
]
のようなJSON出力として終わるしたいです。私はこれをすぐに SQL構文を使用して行うことはできますか?いくつかの種類のクエリは非常に遅いので、両方のテーブルのすべてのデータをフェッチし、サーバー側のプログラミング言語を使用してマージを行うほうが速いのはおそらくでしょうか?
私は前者が正解であると仮定して半分です。この場合、MySQLを使用してこれを行うにはどうすればよいですか?サブクエリ?結合?連合?
私は、これらのテクノロジーのどちらが機能しているか、どれくらい速く/遅く動作しているかを完全に理解していないことを認めなければなりません。
これはほぼ完全に動作しますが、行が見つからない場合はtable2の列をデフォルト値に設定する方法はありますか?たとえば、table2に一致する行が見つからなかったために 'extra_info'カラムをテーブルに埋め込むことができなかった場合は、それを文字列「{}」や数字などに設定しますか? – Hubro
私は 'IFNULL(Table2.extra_info、 'DefaultValue')をextra_infoとして追加して答えを編集しました。 –
優秀、ありがとう – Hubro