Mysql 如何从单个表中获取两列的最大值?
假设我有一个名为Item的表,这里我将给出示例表的值和我的预期输出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
------
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