0

2 つのクエリがあります。

SELECT opr, COUNT(*) FROM table WHERE field = 'YES' GROUP BY opr

SELECT opr, MAX(category) FROM table WHERE field = 'NO' GROUP BY opr

したがって、基本的に最初のクエリでは、ユーザーが行うトランザクションの数を取得しています。2 番目のクエリでは、これらすべてのトランザクションが該当するカテゴリを取得しています。彼らが行ったトランザクションごとにすべてのカテゴリを取得するのではなく、カテゴリ フィールドの最大値だけを取得して、オペレーターごとに 1 つのエントリを取得したいと考えています。

これまで、両方の結果セットを別々の配列でキャッチし、両方の配列をループして完全な opr->picks->category を取得してきました。

これは常に機能するとは限りません。間違ったカテゴリを間違った演算子に関連付けることがあります。

これら 2 つのクエリを 1 つに結合して、演算子とピック、次に MAX(category) を取得する方法はありますか? 問題は、各クエリの条件がフィールド列で異なることです。

4

4 に答える 4

0

プロセッサ上でさらに高速にするには、sum bool を使用します。

select 
opr, 
sum(field='yes') as transactions, 
max(if(field='no',category, null)) as category
from table 
group by opr
于 2013-10-11T14:52:38.310 に答える