SQL(php)需要提取最佳记录

SQL(php)需要提取最佳记录,php,sql,records,Php,Sql,Records,以下代码不能正常工作 SELECT Species, FishName, Rank, Angler, lb, oz, dr, Drams, Peg, DateCaught FROM (SELECT Species, FishName, Rank, Angler, lb, oz, dr, Drams, Peg, DateCaught FROM ConqPB ORDER BY FishName, Drams DESC) a WHERE Species =

以下代码不能正常工作

SELECT Species, FishName, Rank, Angler, lb, oz, dr, Drams, Peg, DateCaught
FROM 
     (SELECT Species, FishName, Rank, Angler, lb, oz, dr, Drams, Peg, DateCaught 
      FROM   ConqPB 
      ORDER BY FishName, Drams DESC) a
WHERE Species = 'Common Bream' 
GROUP BY FishName 
ORDER BY Species ASC, Rank ASC, Drams ASC
这是一份常见鲷鱼种类的列表,并将显示每种鱼名和捕获它们的垂钓者的最高重量的记录列表

但是由于一些未知的原因——我没有编辑它,它已经停止工作,现在只返回一个垂钓者最好的,而不是实际最好的

内部语句测试良好,返回鱼名列表,并按desc顺序排列权重DRAM。当显示时,每个鱼名的顶部记录是最高捕获重量。外部声明现在失败了

我们非常感谢您的帮助。我也想知道为什么它停止工作

例如:

Species           FishName               Drams             Angler  
Common Bream      Henry                  300               Peter Beard  
Common Bream      Henry                  400               Harry Web  
Common Bream      Henry                  0                 Carl Pilk  
Common Bream      Darcy                  0                 Peter Beard  
Common Bream      Darcy                  760               Harry Web  
Common Bream      Darcy                  900               Carl Pilk 
结果将是

普通鲷鱼记录

Fishname             Drams                 Angler  
Henry                400                   Harry Web  
Darcy                900                   Carl Pilk 

你能安装一个吗?至于它为什么停止工作,我们不能告诉你。如果它昨天起作用,而今天不起作用,我会查看原始数据,以确保它没有被删除或以某种方式更改。子查询的意义是什么?为什么不直接查询ConqPB?数据很好。在内部语句中,它按照它应该的方式组织它,但是外部语句失败了。您将如何直接查询ConqPB?以前尝试过这个,但是太复杂了-因此我在论坛上问过,这个声明解决了这个问题。奇怪的是它失败了。我也给托管公司发了信息,看看他们是否做了一些奇怪的事情。添加了一个示例,说明需要做什么。这是我不理解的。这段代码的工作原理如图所示,非常完美,但当它被用作在我的网站上运行的php脚本时,它在所有可能的方面都失败了——而且这也只能挖掘出一个名称。我已经检查了主表,所有信息都存在。所以我不知道为什么它在网站上不起作用。我问过主持人他们有没有改变什么,因为我没有!!!是否有可能托管站点中发生了一些可能会干扰使用php脚本执行Sql的方式的更改?fancyPants演示可以在brill上运行,但在我的网站上无法有效运行。它仍然只打印出一个垂钓者的名字。我也确信Max函数在我的php脚本中永远不会正常工作。你是否有可能省略了group by?它是完整的。只需减少种类,以便在网站上更容易看到,现在发生的是我选择了一个种类,然后你的代码执行,但它仍然只显示一个垂钓者的记录,而不是最好的。好像Max Drams不工作了什么的。
select
*
from
t
inner join (
  select
  species, fishname, max(drams) as maxdrams
  from
  t
  group by species, fishname
) sq on t.species = sq.species and t.fishname = sq.fishname and sq.maxdrams = t.drams