2017-08-01 12 views
0

私はpostgresqlについて質問したい、私はgoogleから私の答えを見つけることができませんでした。 さて、始めましょう、PGSQLヘルプ、SELECT行バインド

私は 'first_name'と 'last_name'列を持つ20行の '名前'という名前のテーブルがあるとします。

'first_name'と 'last_name'のすべての値を含む1つの列のみを返すようにするには、40行( 'first_name'から20、 'last_name'から20)を返します。 ?あなたの助けのための

おかげで、

答えて

2

あなたは以下のように、UNION演算子を使用して、同じ名前に列をエイリアシングこれを行うことができます:UNION演算子はに、重複した名前を削除しますが

SELECT 
first_name AS names 
FROM name 
UNION 
SELECT 
last_name AS names 
FROM name; 

移調する

SELECT 
first_name AS names 
FROM name 
UNION ALL 
SELECT 
last_name AS names 
FROM name; 
+1

「UNION」は重複を除外します。したがって、複数の名前が複数存在する場合、結果は40未満になります。これは、@ Luckatmeが望むものかもしれません。クエリ結果に重複が現れる場合は、代わりに 'UNION ALL'を使用してください。 – markusk

+0

非常に有効なポイント@markusk、私はこの場合私のコードを編集しました。 – WJS

0

別の方法:重複名を含む、すべてのものを含めるには、以下のようにUNION ALL演算子を使用します行の列:UNION ALLアプローチは2回のスキャンを行いますながら

SELECT UNNEST(ARRAY[first_name, last_name]) AS name 
FROM name; 

このアプローチでは、テーブルの上に単一のシーケンシャルスキャンを行います。どのアプローチが優れているかは、データに依存する可能性が高いです。