0

私は2つのテーブルを持っています:

`tb_a` :         `tb_b`

========         ========
|id|key|         |id|key|
========         ========
| 1|  A|         | 1|  D|
| 2|  B|         | 2|  E|
| 3|  C|         | 3|  F|
| 4|  B|         | 4|  B|
========         | 5|  A|
                 | 6|  G|
                 ========

とから結合keyしたい。したがって、結果は = ABCDEFG でなければなりません。tb_atb_b

私が試したコードは次のとおりです。

SELECT id, key
  FROM tb_a
UNION ALL 
SELECT id, key
  FROM tb_b
ORDER BY id

しかし、うまくいかないようです。

4

6 に答える 6

1

クエリ出力で field を使用しないidでください。出力を でグループ化できなくなるためkeyです。も使用しないでください。代わりUNION ALLに使用してください:UNION

SELECT  `key` 
FROM tb_a
UNION 
SELECT  `key` 
FROM tb_b
于 2012-09-23T03:56:17.570 に答える
0

結合は、集合論の基本的な加法演算(和集合、共通部分、差)に直接マップされません。これは、他の集合の要素を単純に含めるか除外することによって、新しい集合を作成します。SQLでそれらを取得する方法はありますが、UNIONステートメントとMINUSステートメントをチェーンする必要があります。

むしろ、結合はマッピング操作であり、ルールのセットに従って各セットから要素を取得し、それらを新しいセットの新しい要素にまとめることによって新しいセットを作成します。これは、実際には元の2つを含む小さなセットです。他のセットの要素。

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

UNION内の各SELECTステートメントには、同じ数の列が必要であることに注意してください。列も同様のデータ型である必要があります。また、各SELECTステートメントの列は同じ順序である必要があります。

:UNIONオペレーターは、デフォルトで個別の値のみを選択します。重複する値を許可するには、UNIONALLを使用します。

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

よく読んで

SQL結合の視覚的説明-コーディングホラー

于 2012-09-23T03:37:35.143 に答える
0
SELECT GROUP_CONCAT(`key` ORDER BY `key` SEPARATOR '') AS 'key'
FROM (
    SELECT `key` FROM tb_a
    UNION
    SELECT `key` FROM tb_b
) a
GROUP BY NULL

編集:私の悪い。ここ:

SELECT * FROM (
    SELECT `id`,`key` FROM tb_a
    UNION
    SELECT `id`,`key` FROM tb_b
) tb_ab
GROUP BY `key`
ORDER BY `key`

しかし、あなたの答えは、どの基準によってid決定されるべきか明確ではありません。

于 2012-09-23T03:43:28.413 に答える
0

CONCAT次のようにSQLクエリで 使用する必要があります。

SELECT tb_a.id, tb_b.id, CONCAT(tb_a.key,tb_b.key) as Combined_key
FROM tb_a, tb_b
ORDER BY tb_a.id, tb_b.id
于 2012-09-23T03:25:50.067 に答える
0

問題が重複値である場合は、UNION ALL が原因です。代わりに UNION を単独で使用してください。

于 2012-09-23T03:29:07.753 に答える
0
SELECT DISTINCT `key` FROM (
  SELECT key FROM tb_a
  UNION
  SELECT key FROM tb_b
) AS t ORDER BY `key`
于 2012-09-23T03:59:15.873 に答える