使用自连接基于现有SQL查询的最小值

时间:2013-05-15 23:28:09

标签: mysql sql

我的问题与this StackOverflow question非常相似,显然是学习SQL的common issue。在它的本质上,我试图使用现有的表字段找到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任务附加到现有查询并复制它的WHERE条件以在Groupwise任务中使用。你能告诉我怎么做this in this query吗?

1 个答案:

答案 0 :(得分: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