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

时间:2015-01-09 04:09:58

标签: php mysql mysql-select-db

我有一张看起来像这样的表:

  

id name qty price rev

     

1 book1 2 $ 10 0

     

2 book2 1 $ 5 0

     

3 book1 3 $ 15 1

     

4 book3 2 $ 10 0

     

5 book4 3 $ 15 0

     

6 book2 3 $ 15 1

     

7 book2 4 $ 20 2

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

  

没有名称数量价格转速

     

1 book1 3 $ 15 1

     

2 book2 4 $ 20 2

     

3 book3 2 $ 10 0

     

4 book4 3 $ 15 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 } ?>

那么,现在如何获取数据?

我使用&#39; WHERE&#39;进行了各种查询。但是没有得到结果

2 个答案:

答案 0 :(得分:2)

我明白你的意思..所以你只想选择每个书名最多的数量的行..对吧?

尝试以下查询

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 enter image description here

答案 1 :(得分:0)

原因是SUMaggregate function。这些函数通常会返回一行:在这种情况下,您将对整个表格求和,除非您按某种方式进行分组。

如果我理解你的问题,你希望列出所有元素的最高版本吗?

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

然后它只是typesetting it correctly的问题。