0

我有一张桌子,看起来像:

ID 名称 数量 价格 rev

1 本书1 2 $10 0

2 本书 2 1 $5 0

3 本书 1 3 15 美元 1

4 本书 3 2 $10 0

5 本书 4 3 $15 0

6 本书 2 3 15 美元 1

7 本书 2 4 $20 2

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

无名称 数量 价格 rev

1 本书1 3 $15 1

2 本书2 4 $20 2

3 本书 3 2 $10 0

4 本书 4 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 } ?>

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

我已经使用“WHERE”完成了各种查询,但没有得到结果

4

2 回答 2

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 在此处输入图像描述

于 2015-01-09T04:38:13.977 回答
0

原因是它SUM是一个聚合函数。此类函数通常返回一行:在这种情况下,除非您按某些内容分组,否则您将对整个表求和。

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

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

那么只需正确排版即可

于 2015-01-09T04:12:56.193 回答