2016-07-23 11 views
-1

各列から異なる値のみを選択します。明確な組み合わせではありません。 これは私のクエリですが、すべての列の固有の組み合わせを返します。私は、各列が他の列に依存せずに独自の値を表示したいと思っています。すべての列から異なる値を選択してください

$sql= "select distinct 
      CASE WHEN col1 not regexp '[0-9]' THEN col1 else null end as col1 
      ,CASE WHEN col2 not regexp '[0-9]' THEN col2 else null end as col2 
      ,CASE WHEN col3 not regexp '[0-9]' THEN col3 else null end as col3 from table_name"; 

それはこの返します

col1| col2| col3 
a  1  3 
b  2  4 
c  2  4 
d  1  3 

あなたたちはCOL2とCOL3の値は、私があまりにもCOL2とCOL3からわずかに異なるたく明瞭でないことを見ることができました。ありがとう!何をしたいのよう

+0

あなたは 'しかし、働いていない'について詳しく説明できますか?サンプルデータと希望する出力を表示できますか? –

+0

@TimBiegeleisen今すぐ確認してください。 – tooba

+0

'distinct col1、col2、col3' ...と' case' stmtの場合は、個々のカラムではなく、すべてのカラムで区別できます。 – Drew

答えて

0

私の最高の推測ではunion allを使用することです:

select distinct (case when col1 not regexp '[0-9]' then col1 end) as col1, 'col1' as which 
from table_name 
union all 
select distinct (case when col2 not regexp '[0-9]' then col2 end) as col2, 'col2' as which 
from table_name 
union all 
select distinct (case when col3 not regexp '[0-9]' then col3 end) as col3, 'col3' as which 
from table_name; 

これは、2つの列、1列名であり、他の列内の個別値であるとの結果を生成します。

+0

が動作しません。単純なことは、私は別々の値をすべての列から個別に求めているということです。あなたがそれを得ることを望みます。 – tooba

+0

Gordonにあなたが持っているサンプルデータと期待される結果が示された場合、彼は睡眠中にこれを行うことができました – Drew

+0

それは私に感謝します。 – tooba