Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于现有SQL查询对最小值使用自联接_Mysql_Sql - Fatal编程技术网

Mysql 基于现有SQL查询对最小值使用自联接

Mysql 基于现有SQL查询对最小值使用自联接,mysql,sql,Mysql,Sql,我的问题与学习SQL非常相似,而且显然是一个重要的问题。在essense,我试图使用现有的表字段找到一个最小值。典型的解决方案是生成一个子查询,该子查询具有一定的自引用性。我从上面的示例中复制了以下代码: 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非常相似,而且显然是一个重要的问题。在essense,我试图使用现有的表字段找到一个最小值。典型的解决方案是生成一个子查询,该子查询具有一定的自引用性。我从上面的示例中复制了以下代码:

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中的视图模块使用uc_目录视图生成的查询。然后我使用hook\u views\u query\u alter进行更改。我使用的是MYSQL数据库


编辑:也许我尝试做的更好的描述是将Groupwise Min任务附加到现有查询并复制到Groupwise任务中要使用的WHERE条件上。你能告诉我怎么做吗?

让我指出,从。。。GROUP BY id在大多数SQL实现中都是非法的,因为GROUP BY列表中既没有聚合也没有列出。虽然MySql表扩展允许这种语法,但结果将是不可预测的。@PM A是聚合结果的别名。“很好,很漂亮。”草莓-对。我应该注意到。我想我问错了问题。那个代码片段是我试图完成的一个抽象。我个人认为,解决方案将来自某种形式,即现有的_query.id=SELECT id from table HAVING A=mina。好吧,我一直渴望学习新技术。。。但是如果它不起作用,请考虑描述一个不那么抽象的问题。当我的词汇量赶上我的工作时,我的问题就不会那么抽象了——我向你保证。我已经把具体的例子和两件我尝试过的东西复制到了我的Pastebin中,而你的第二次尝试远远优于第一次尝试,它仍然太遥远,无法轻易成型。我认为您应该重新开始,逐渐增加复杂性,非常明确地说明您实际需要返回哪些列,并且绝对避免INSELECT。。。!我明白你的意思。问题是我不能重写查询,只能修改它,因为它是一个更大的框架,特别是Drupal 7视图的一部分
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