MySql SELECT 从多条记录中获取 1 条记录

MySql SELECT get 1 record from multiple record

我有一个 table 看起来像 :

id name qty price rev

1 book1 2 0

2 book2 1 0

3 book1 3 1

4 book3 2 0

5 book4 3 0

6 book2 3 1

7 book2 4 2

将在网络上显示的数据是,

no name qty price rev

1 book1 3 1

2 book2 4 2

3 book3 2 0

4 book4 3 0

这是我使用的查询

<?php
$sql = mysql_query("SELECT SUM(qty*price) FROM data_ph_user ORDER BY id");
while($res = mysql_fetch_array($sql)){
?>
<!-- display result -->
<?php 
$resf1 = $res['SUM(qty*price)']; if($resf1 == 0){ echo '0'; }else{ echo $resf1; }
?>
<!-- end display -->
<?php } ?>

所以,现在如何获取数据?

我使用 'WHERE' 进行了各种查询,但没有得到结果

原因是 SUM 是一个 aggregate function。这样的功能通常 return 一行:在这种情况下,您将对整个 table 求和,除非 您按某些东西分组。

如果我对你的问题理解正确,你想列出所有元素的最高修订版?

SELECT *, MAX(rev) FROM data_ph_user GROUP BY `name`

那就只是typesetting it correctly.

的问题了

我明白你的意思了..所以你只想select每个书名数量最大的行..对吗??

试试下面的查询

select
  name, qty, price, rev
from
  MyTestingTable
where
  qty = (select max(qty) from MyTestingTable i where i.Name = MyTestingTable.Name)
order by MyTestingTable.name

你也可以看看给定的SQL fiddle..它会给你想要的结果..

http://sqlfiddle.com/#!2/9162c4/8