0

この質問を1つの文に要約するのは難しいです。2つのテーブルがあります。そのうちの1つは、外部フィードによって自動的かつ定期的に更新されます。2番目のテーブルには、一意のキーで識別される2番目のテーブルの一部の行に関する追加情報があります。次に例を示します。

表1
    id:int PRIMARY KEY
    チャネル:varchar(255)一意キー
    名前:varchar(255)NOT NULL
    検証済み:tinyint(1)NOT NULL

表2
    id:int PRIMARY KEY
    チャネル:varchar(255)一意キー
    extra_info:varchar(255)

Table1はメインテーブルです。これは実際に選択されているテーブルです。Table1に存在するTable2のすべての行が選択時にマージされるかのように、Table2のフィールド(idとchannel以外)を選択時にTable1に移動したいと思います。

たとえば、これら2つのテーブルの情報を次のようなJSON出力として出力したいとします。

[{
    "id": 5,
    "channel": "bkids2",
    "name": "Bkid",
    "verified": true,
    "extra_info": "Some extra information added using Table2"
},
...
]

先に進むための最速の方法は何だろうかと思います。SQL構文を使用してこれをすばやく行うことはできますか?一部の種類のクエリは非常に遅いことを知っているので、両方のテーブルのすべてのデータをフェッチし、サーバー側のプログラミング言語を使用してマージを実行する方が速いのではないでしょうか。

前者が正解であると私は半分考えています。その場合、MySQLを使用してこれを行うにはどうすればよいですか?サブクエリ?参加しますか?連合?

これらのテクノロジーのどちらがどのように機能するのか、またはそれらがどのように高速/低速で動作するのかを完全には理解していないことを認めなければなりません。正しい方向に私を向けることができる人に感謝します。

4

2 に答える 2

1

これを試して:

SELECT Table1.*, IFNULL(Table2.extra_info, 'DefaultValue') as extra_info
FROM Table1 LEFT OUTER JOIN Table2
ON Table1.id = Table2.id
于 2012-04-26T05:54:24.643 に答える
0

クエリを記述して、目的の出力を取得できます。

SELECT id, channel, name, verified, extra_info FROM table_1 NATURAL JOIN table_2

このクエリは両方のテーブルを結合し、両方に共通の結果を表示します。これがあなたの質問への答えであることを願っています....

于 2012-04-26T06:05:31.203 に答える