2014-03-05 106 views
-1

最高值我有一个表获得从结果

t1 
-------------- 
id 
date 
val_1 
val_2 

我需要得到10项最新成果,让他们从早期的排序,以最新的日期,所以我这样做是因为

SELECT * FROM (
     SELECT * 
     FROM myTable 
     WHERE project = $project_id 
     ORDER BY date DESC 
     LIMIT 10) AS results ORDER BY id ASC 

现在,我需要获得val_1的最高值。我正在尝试构建一个条形图并希望获得最高值,因为我需要将其除以最大高度,并将该结果用作乘数,以将val_1和val_2叠加在彼此之上,而不会超出图形的高度。

+1

看起来您可以使用单个查询:'SELECT * FROM myTable WHERE project = $ project_id ORDER BY date DESC,id ASC LIMIT 10'您可以使用'MAX'获取'val_1'的最大值 – Prix

+0

等待,我的查询过于复杂?让我试试你的建议。我如何使用MAX?谢谢。 – santa

+0

[获取列的最大值的示例](https://dev.mysql.com/doc/refman/5.0/en/example-maximum-column.html) – Prix

回答

0

所以你想要这样的东西?

SELECT *, 
     t2.biggest_value, 
     ((t1.val_1/t2.biggest_value)*100) AS `%` 
    FROM myTable t1 
    JOIN (SELECT MAX(val_1) AS biggest_value, 
       project 
      FROM myTable 
     ) AS t2 
     ON t2.project = t1.project 
    WHERE t1.project = $project_id 
ORDER BY date DESC, id ASC 
    LIMIT 10 

联接沾到val_1的最高值,而外部查询与计算每个val_1的基础上,最大百分比值一起收集的所有数据。

Live DEMO

+0

嗯,我认为演示网站已关闭...我得到:Railo 3.3.4.003错误(railo.runtime.net.mail.MailException)但让我给这个查询一个旋风。谢谢。 – santa

+0

@santa现场演示不在我手中,您将不得不等待所有者修复它,但是因为您手头上有它,请告诉我它是否适用于您。 – Prix

+0

好的,该网站似乎已经到了。我调整了数据集使其更接近我的实际数据:http://sqlfiddle.com/#!2/1ef87/3还有一些问题需要解决。记录需要按照从早到晚的日期进行重新排列。目前它是相反的,MAX值似乎是整个集合中最大的,而不是我检索的那个。在当前的例子中,它应该是111.谢谢。 – santa

0

尝试像

SELECT val_1 as max_val FROM myTable ORDER by val_1 DESC LIMIT 1 

您也可以尝试用MAX

SELECT MAX(val_1) as max_val FROM myTable 
0

你可以试试这个:

SELECT *, MAX(val_1) FROM (
    SELECT * 
    FROM myTable 
    WHERE project = $project_id 
    ORDER BY date DESC 
    LIMIT 10) AS results ORDER by id ASC 
0

3.6.1 The Maximum Value for a Column

“什么是最高的项目编号?”

SELECT MAX(article) AS article FROM shop; 

你可以自由地在查询结果使用MAX()还有:

SELECT MAX(val_1) FROM (SELECT …) t; 
+0

我需要我检索的结果集中的最大值。 – santa

+0

然后用子查询替换“shop”。 –

+0

我实际上已将我的复杂查询更改为@Prix建议的查询:SELECT * FROM myTable WHERE project = $ project_id ORDER BY date DESC,id ASC LIMIT 10我仍然需要按日期排序的所有这些结果。另外,我需要从这些结果中找出val_1的最大值。 – santa

0

做这样的事情;

SELECT MAX(val_1) FROM(SELECT * 
     FROM myTable 
     WHERE project = $project_id 
     ORDER BY date DESC 
     LIMIT 10) AS results ORDER by id ASC 
0

该查询会给你最大与其他列: -

SELECT id,(select MAX(`price`) FROM `products`) as FINAL from products 

注: - 该查询组装从产品表中的id和最高价格.IE其关联最大价格与每个记录集。