2

なぜ

select 1 as a, 2 as b
union all
select 20 as b, 10 as a

戻り値

a   b
1   2
20  10

それ以外の

a   b
1   2
10  20

?

union列名を一致させる方法はありますか?

4

4 に答える 4

4

いいえ、UNION では順番に選択する必要があります。

于 2013-06-05T17:31:44.387 に答える
2

Union は、列の数と、クエリ文字列内のそれらの相対位置のみを調べます。エイリアスまたはソース列名に基づく混合一致はありません。たとえば、2 つの完全に異なるテーブルを持つことができます。

SELECT x,y FROM foo
UNION
SELECT p,q FROM bar

この場合、MySQL は何をすべきでしょうか? 単一の行を返す

x,y,p,q

列名が一致しないためですか?いいえ。それは間違っているでしょう。

于 2013-06-05T17:33:32.077 に答える
2

列名は、ユニオン列を定義するユニオンの最初の部分にのみ関連します。他の共用体は、最初の選択から列が指定された順序と同じ順序で結合され、多くの場合、異なる名前が付けられます。最初の列を 2 番目の列に関連付けたい場合は、できません。ただし、2 番目の select ステートメントを調整して、列を正しい順序に並べることができます。

于 2013-06-05T17:32:31.990 に答える