2017-02-01 4 views
-3

私は条件フィールドIDは、私はいくつかのために、これはケーキのちょうど一部である知っている、それが唯一の1としてカウントされます複製し、アプリケーションIDが1有効な構文クエリは何ですか?

SELECT SUM(IF(PU.field_id IS DISTINCT AND PU.app_id =1,1,0)) as "With Reco" FROM tbl.PutUser. 

に等しいであれば、フィールドを合計しようとしています。

+2

サンプルデータと希望の結果で別の質問をしてください。 –

+1

サンプルデータと期待される出力は、達成しようとしていることをよりよく説明します。 – spencer7593

答えて

1

私たちは、MySQL固有のIF()機能を使用することができ、

SELECT COUNT(DISTINCT IF(pu.app_id=1,pu.field_id,NULL)) AS `With Reco` 
    FROM mytable pu 

または同等の、より多くのANSI規格に準拠しCASE表現の条件は、我々がARENテストしたいとき

SELECT COUNT(DISTINCT CASE WHEN pu.app_id=1 THEN pu.field_id END) 

はNULLを返すように」条件が満たされたときの別個の値のカウントを取得したいという式(field_id)を返す。次に、COUNT(DISTINCT)集計で式をラップすることができます。テストのために

、COUNT(DISTINCT)集計を削除し、個々の行を返す...

SELECT pu.app_id 
    , pu.field_id 
    , IF(pu.app_id=1,pu.field_id,NULL) AS foo 
    FROM mytable pu 
ORDER BY ... 
LIMIT 80 

あなたが求めているものの私の最高の理解です。

app_id field_id foo 
------ -------- ----- 
1  sam  sam 
0  sam  NULL 
1  sam  sam 
2  bob  NULL 
NULL bugs  NULL 

これはあなたが求めているものではない場合、いくつかのサンプルデータとクエリの予想される出力を提供することを検討してください。

+0

完璧な、まさに私が探していたもの。 –

関連する問題