私の質問は、この StackOverflow の質問と非常によく似ており、明らかにSQL の学習における一般的な問題です。本質的に、既存のテーブル フィールドを使用して min() 値を見つけようとしています。典型的な解決策は、ある程度自己参照的なサブクエリを作成することです。上記の例からこのコードをコピーしました。
select *
from yourtable t1
inner join
(
select min(A) A, id
from yourtable
group by id
) t2
on t1.id = t2.id
and t1.A = t2.A
ただし、私の例では、SQL クエリに他の条件が多数あるため、例にリストされているサブクエリを使用しても機能しません。別の言い方をすれば、適切なクエリ結果を取得するために保存して使用する必要がある、さまざまな引数を持つ既存のクエリがあります。これを効果的に行う新しいコードをいくつか添付する必要があります。
select *
from yourtable t1
inner join
(
select min(A) A, id
from *my existing query results*
group by id
) t2
on t1.id = t2.id
and t1.A = t2.A
最初の例にリストされていることを行う場合、クエリに既に存在する他の条件に基づいて、結果に存在しない最小値を選択することになります。
ここに興味がある場合は、既存のクエリが以下にリンクされています。Drupal 7 の Views モジュールが uc_catalog ビューを使用して生成したクエリです。次にhook_views_query_alter()
、変更を加えるために使用しています。MYSQL データベースを使用しています。
編集:おそらく、私がやろうとしていることのより良い説明は、Groupwise Min タスクを既存のクエリにアタッチし、Groupwise タスク内で使用する WHERE 条件をコピーすることです。このクエリでこれを行う方法を教えてもらえますか?