我的问题与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吗?
答案 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