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..它会给你想要的结果..
我有一个 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..它会给你想要的结果..