2011-11-07 6 views
-1

個別の行を選択します。SQLクエリ、私が疑問持ってどこnullでない

だから私は、テーブルに以下のデータを持っている」

id  name  city  state  phone   price 

234 Kevin Chicago IL  5555555555 550 

234 Kevin Chicago IL  5555555555 NULL 

234 Kevin Chicago IL  55555 NULL 

234 Kevin Chicago IL  NULL NULL 

人々は、データベースにデータをロードして、それがアップ見せているがなぜなら、各行の文字制限のこのような...

だから、僕はこの行が返さたい各one..Iからほとんどを得るために、私の明確なクエリを伝えることができる方法:

234 Kevin Chicago IL  5555555555 550 

そして、最後の行が常にnullになる可能性があるので、「すべての行がnullなどではない」ということはできません。

ありがとうございました! 、一般クエリ名あたりphone & priceを得る:

編集:

+2

が今、あなたのクエリのものです? – jle

+0

チュートリアルを参照してください。これは基本的な助けを求める方法です。 – Shef

+0

テーブルレイアウトを提供できますか?あなたの例では、論理プライマリキー、サロゲートキー、または最新のレコードを示すのに役立つものはありません。 (Row_Insert_Timestampなど)最も新しいレコードがNULL値が最も少ないレコードであることを示すビジネスロジックがありますか? (例えば、特定のIDの最も完全なレコード) –

答えて

1

は「ほとんど」は、正確かつphonepriceのデータ型に応じて、何を意味するのかに応じて、これはあなたのクエリである可能性があります。

SELECT id, name, city, state, max(phone) AS phone, max(price) AS price 
FROM tbl 
GROUP BY id, name, city, state; 

phonepriceは異なる行からこの道を来ることができます。 aggregate functions

マニュアルは:特に断りのない限り

、グループ関数はNULL値を無視します。

したがって、IFNULLまたはCOALESCEはここでは必要ありません。

+0

ありがとう、これは働いた!とても有難い! – JohnnyRocket

0

は、上記の各列の各「最大」のためにあなたを与えるこの

SELECT 
ID, 
MAX (IFNULL (NAME, ' ')) AS NAME, 
MAX (IFNULL (CITY, ' ')) AS CITY, 
MAX (IFNULL (STATE, ' ')) AS STATE, 
MAX (IFNULL (PHONE, ' ')) AS PHONE, 
MAX (IFNULL (PRICE, ' ')) AS PRICE 
FROM MyTable 
GROUP BY ID 

してみてください - これが組み合わされる異なる行からのコンテンツにつながることができます...

関連する問題