我的问题与这个 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 任务附加到现有查询并复制它的 WHERE 条件以在 Groupwise 任务中使用。你能告诉我如何在这个查询中做到这一点吗?