2

私は2つの同様のテーブルを持っており、1つのテーブルのような結果を持つ1つのクエリで2つのテーブルから結果を出したい(タンデムとしての行と時間の順序)

MyTable1:

time    name    Comment
-------------------------
45      asd     testasd
49      gas     testgas
50      has     testhas
96      bag     testbag

MyTable2:

time    name    Comment
-------------------------
48      hjasf   bigasd
54      adg     biggas
65      zxx     bighas
115     cxx     bobbag
131     xxb     bobhas

結果:

time    name    Comment
-------------------------
45      asd     testasd
48      hjasf   bigasd
49      gas     testgas
50      has     testhas
54      adg     biggas
65      zxx     bighas
96      bag     testbag
115     cxx     bobbag
131     xxb     bobhas

私はそれをやろうとしましたが、わかりません.JOINまたはUNIONを使用する必要がありますか...?

4

4 に答える 4

3

UNION ALL( ALL - 重複を許可するには)を使用するだけです。

SELECT time, name, Comment FROM table1
UNION ALL
SELECT time, name, Comment FROM table2
ORDER BY time

このUNIONコマンドは、JOIN コマンドと同様に、2 つのテーブルから関連する情報を選択するために使用されます。ただし、UNION コマンドを使用する場合は、選択したすべての列が同じデータ型である必要があります。UNION では、個別の値のみが選択されます。

このUNION ALLコマンドは、UNION ALL がすべての値を選択することを除いて、UNION コマンドと同じです。

Union と Union all の違いは、Union all は重複する行を排除せず、代わりにクエリの詳細に適合するすべてのテーブルからすべての行を引き出し、それらをテーブルに結合することです。

出力は次のようになります。

╔══════╦═══════╦═════════╗
║ TIME ║ NAME  ║ COMMENT ║
╠══════╬═══════╬═════════╣
║   45 ║ asd   ║ testasd ║
║   48 ║ hjasf ║ bigasd  ║
║   49 ║ gas   ║ testgas ║
║   50 ║ has   ║ testhas ║
║   54 ║ adg   ║ biggas  ║
║   65 ║ zxx   ║ bighas  ║
║   96 ║ bag   ║ testbag ║
║  115 ║ cxx   ║ bobbag  ║
║  131 ║ xxb   ║ bobhas  ║
╚══════╩═══════╩═════════╝
于 2013-01-23T15:34:09.367 に答える
1

http://www.w3schools.com/sql/sql_union.asp

これを実現するには、select ステートメントを使用して、その間にユニオンをすべて使用します。

于 2013-01-23T15:41:12.787 に答える
1

両方のテーブルに同じ数のフィールドがある場合、これを使用できます。

SELECT * from MyTable1
UNION ALL
SELECT * from MyTable2
ORDER BY time

UNION ALL は、最初のクエリのすべての行を選択し、2 番目のクエリのすべての行と組み合わせます。重複を削除する必要がある場合は、UNION ALL の代わりに UNION を使用する必要があります。ORDER BY 句は、結果の行を時間順に並べ替えます。

UNION句のドキュメントはこちらを参照してください。

于 2013-01-23T15:34:05.843 に答える
0

UNION ALL を次のように使用します。

SELECT `time`, `name`, `Comment` FROM `MyTable1`
UNION ALL
SELECT `time`, `name`, `Comment` FROM `MyTable2`

時間で注文するには、次を試してください。

SELECT * FROM (
SELECT `time`, `name`, `Comment` FROM `MyTable1`
UNION ALL
SELECT `time`, `name`, `Comment` FROM `MyTable2`
) AS `Result` ORDER BY `time` ASC
于 2013-01-23T15:36:31.080 に答える