2

这是mysql表

---------------------------------------------
id | date       | name     |  amount 
---------------------------------------------
1  | 2013-01-31 | abcd     | 200.000 
2  | 2013-02-28 | apple    | 95.000
3  | 2013-03-31 | bannna   | 30.000
4  | 2013-04-30 | computer | 5.000
5  | 2013-05-31 | mobile   | 500.000 
6  | 2013-06-30 | mouse    | 2.000
7  | 2013-07-31 | led tv   | 25000.000
---------------------------------------------

如何找到该表的最高值金额

我想要这样的结果在 php 页面最高金额值 1st

Date       |  Name  | Amount
2013-07-31 | LED TV | 25000.000
2013-05-31 | Mobile | 500.000
2013-01-31 | Abcd   | 200.000
2013-02-28 | Apple  | 95.000

我该怎么做请帮我解决这个问题谢谢

我正在使用此代码,但它没有显示我的结果类型。

<?php
$username = "root";
$password = "";
$hostname = "localhost"; 

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password) 
 or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";

//select a database to work with
$selected = mysql_select_db("car",$dbhandle) 
  or die("Could not select examples");



//execute the SQL query and return records
$result = mysql_query("SELECT MAX( amount ) AS amount FROM table5");

//fetch tha data from the database 
while ($row = mysql_fetch_array($result)) {
   echo "Date:".$row{'date'}." Name:".$row{'name'}."Amount: ". //display the results
   $row{'amount'}."<br>";
}
//close the connection
mysql_close($dbhandle);
?>
4

6 回答 6

4

由于您的属性amountvarchar(字符串)字段,因此您需要int先将属性转换为

SELECT * FROM table5 ORDER BY CAST(amount as SIGNED INTEGER) DESC

如果您只运行以下查询

SELECT * FROM table5 ORDER BY amount DESC

它将列作为字符串排序,结果将是

---------------------------------------------
id | date       | name     |  amount 
---------------------------------------------
2  | 2013-02-28 | apple    | 95.000
4  | 2013-04-30 | computer | 5.000
5  | 2013-05-31 | mobile   | 500.000
3  | 2013-03-31 | bannna   | 30.000
6  | 2013-06-30 | mouse    | 2.000
1  | 2013-01-31 | abcd     | 200.000 
7  | 2013-07-31 | led tv   | 25000.000
---------------------------------------------
于 2013-10-02T05:43:39.377 回答
2

您现在的查询是

SELECT MAX( amount ) AS amount FROM table5

该查询的意思是:给我 table5 的一个最大值

换而言之,应该是

SELECT * FROM table5 ORDER BY amount DESC

该查询的意思是:Get me all values,从最高到最低排序。

更新:上述查询将适用于numeric列,而不是varcharsOP 显然想要的。

于 2013-10-02T05:34:25.610 回答
2

您的以下查询仅返回来自金额字段的最大值'table5'

SELECT MAX( amount ) AS amount FROM table5

但是您的需求与它不同,您应该编写查询,而不是它,

SELECT * FROM table5 ORDER BY amount DESC

上面的查询将按从高到低的顺序从 table5 返回总行数,这就是您要查找的内容。

于 2013-10-02T05:54:56.287 回答
1
SELECT * FROM table5 ORDER BY amount DESC
于 2013-10-02T05:34:43.830 回答
1

使用此查询:

SELECT `date`, `name`, `amount` from `table` order by `amount` desc LIMIT 4

因为您的查询只显示最大一条(只有一条记录)

SELECT MAX( amount ) AS amount FROM table5
于 2013-10-02T05:35:11.597 回答
1

MAX显示列中的最高记录。应该是这样的

SELECT * FROM your_table_name ORDER BY amount DESC
于 2013-10-02T05:36:13.700 回答