0

私の質問は、この 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 条件をコピーすることです。このクエリでこれを行う方法を教えてもらえますか?

4

1 に答える 1

0
select *
from (my existing query) t1
inner join
(
  select min(A) A, id
  from (my existing query)x
  group by id
) t2
  on t1.id = t2.id
  and t1.A = t2.A
于 2013-05-16T19:46:39.943 に答える