Mysql 如何从单个表中获取两列的最大值?

Mysql 如何从单个表中获取两列的最大值?,mysql,Mysql,假设我有一个名为Item的表,这里我将给出示例表的值和我的预期输出 Item ------ Sl.No Itemname Rate Date 1 A 200 15/01/2013 2 B 500 24/05/2013 3 C 600 12/06/2013 4 A 400 17/07/201

假设我有一个名为Item的表,这里我将给出示例表的值和我的预期输出

Item
------
Sl.No   Itemname    Rate    Date

1        A      200             15/01/2013
2        B      500             24/05/2013
3        C      600             12/06/2013
4        A      400             17/07/2013
5        A      550             18/08/2013
6        B      150             19/09/2013
7        C      140             20/10/2013


Expected Output:

Sl.No   Itemname    Rate    Date

1         A         550        18/08/2013
2         B         150        19/09/2013
3         C         140        20/10/2013
可以编写什么查询来获得此输出

我刚刚试过这个问题

select * from postagitem group by categoryname where date = 
  (SELECT MAX(date) FROM postagitem);
但是它不起作用,如果有人帮助我,真的很值得一提,朋友们

提前谢谢

感谢各位朋友的宝贵回复

但是我仍然没有得到正确的输出,朋友们

实际上我想显示所有的值,条件是最大日期。请允许我给出我的原始表格和数值

表名:价格

城市金价银价日期

孟买3000 60 13-07-2014 德里4000 50 14-04-2014 班加罗尔1400 40 16-06-2014 孟买1500 58 18-09-2014 孟买2500 54 19-08-2014 德里1800 60 01-10-2014 班加罗尔1700 44 02-11-2014

现在,预期的输出将是

城市金价银价日期

孟买1500 58 18-09-2014->最长/最近日期记录 德里1800 60 01-10-2014->最长/最近日期记录 班加罗尔1400 40 16-06-2014->最长/最近日期记录

如何编写查询好友


提前感谢

此查询可能会为您提供预期结果:

SELECT * FROM `table` t1
WHERE (SELECT count(*) FROM `table` t2
       WHERE t1.Itemname = t2.Itemname AND
             t1.Date < t2.date) = 0
相同的查询,但此查询可能更容易理解:

SELECT *, (SELECT count(*) FROM `table` t2 WHERE t1.Itemname = t2.Itemname AND t1.Date < t2.date) AS `LaterRecords`
FROM `table` t1
HAVING `LaterRecords` = 0
如果按最长日期

SELECT * FROM test t 
where date=(select max(date) from test t1 where t.itemname=t1.itemname)

此查询实现了您想要的技巧:

SELECT B.MINSLNO, B.ITEMNAME, A.RATE, B.MAXDATE FROM
MY_TABLE A,
(
   SELECT MIN(SLNO) MINSLNO, ITEMNAME, MAX(DATEE) MAXDATE FROM MY_TABLE
   GROUP BY ITEMNAME
) B
WHERE A.DATEE = B.MAXDATE
输出:提供项目名称、项目的最小slno、项目的最大日期、项目的最大日期的费率

 Minslno    |itemname| rate  | maxdate
    1       |A       |550    |  18-AUG-2013
    2       |B       |  150  |  19-SEP-2013
    3       |C       |140    |  20-OCT-2013

可能是这样的

SELECT T1.M_SINO AS SL_NO,T.ITEMNAME,T.RATE,T.DATE 
FROM Test T INNER JOIN
     (SELECT Itemname,Max(date)MyDat ,Min(SL_NO) As M_SINO 
      FROM Test 
      GROUP BY Itemname) T1 ON
      T.Date = T1.MyDat AND
      T.Itemname = T1.Itemname
输出:


为什么B&C的值不是最大值?为什么你希望S1.否在A的结果中是1而不是5?@IleshPatel他是在日期前取最新值你想要该值的最大值或最大序列号不是因为它与此问题特别相关,而是我是SQL。我不知道什么是“2013年1月15日”:-@对于每一行,我选择具有相同Itemname和更晚日期的行数。如果没有这样的行count==0,我显示这一行。若同一项在每个最长日期有多条记录,但看起来其他答案并不能解决这个问题,那个么就会出现错误well@AmarnathBalasubramanian添加了另一个查询,这可能有助于理解firs oneDude,此s查询对我无效..我需要该查询显示与maxdate相关的记录。。
Sl.No   Itemname    Rate       Date

1         A         550        18/08/2013
2         B         150        19/09/2013
3         C         140        20/10/2013