求SQL语句

zhaokeke2004 2004-03-26 08:54:31
有如下表a:
ITEM PRICE DATE
AA 3.56 20-03-2004
AA 3.45 26-03-2004
BB 5.65 12-02-2003
BB 7.56 10-03-2004
BB 2.12 24-03-2004
想得到
ITEM PRICE
AA 3.45
BB 2.12
就是拿最新的ITEM的价钱
...全文
74 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wushigang 2004-04-05
  • 打赏
  • 举报
回复
上面只有这两句是对的,其它全错!
select item,price from tb_test where (item,drq) in (select item,max(drq) from tb_test group by item);

SELECT * FROM TEST T WHERE (T.ITEM,T.DATE1) IN (SELECT ITEM,MAX(DATE1) FROM TEST GROUP BY ITEM)
不过这也太慢了吧! 应该是下面这句:

select item,price,mydate from test t where mydate=(select max(mydate) from te
st where item=t.item);
guangli_zhang 2004-04-05
  • 打赏
  • 举报
回复
SELECT * FROM a T WHERE (T.ITEM,T.DATE1) IN (SELECT ITEM,MAX(DATE1) FROM a GROUP BY ITEM)
guangli_zhang 2004-04-05
  • 打赏
  • 举报
回复
SELECT * FROM TEST T WHERE (T.ITEM,T.DATE1) IN (SELECT ITEM,MAX(DATE1) FROM TEST GROUP BY ITEM)
yqwd911 2004-04-04
  • 打赏
  • 举报
回复
beckhambobo(beckham)的是正确的.
以为如果是:
select item,price,drq from tb_test where drq in (select max(drq) from tb_test group by item);
假设:
当AA的最新价格是昨天的(今天没有变化不用更新)
BB的最新价格是今天的.
表内数据如下:
ITEM PRICE DRQ
---- ------- -----------
AA 3.56 2004-3-26 9
BB 4.56 2004-3-26 9
BB 5.56 2004-3-27 9
BB 6.56 2004-3-21 9

那么用这个语句就会选出这样的结果
ITEM PRICE DRQ
---- ------- -----------
AA 3.56 2004-3-26 9
BB 4.56 2004-3-26 9
BB 5.56 2004-3-27 9

请思考!还是beckhambobo(beckham)的语句正确.
select item,price from tb_test where (item,drq) in (select item,max(drq) from tb_test group by item);
duhailee 2004-03-30
  • 打赏
  • 举报
回复
select item,price,drq from tb_test where drq in (select max(drq) from tb_test group by item);
haifeng1012 2004-03-27
  • 打赏
  • 举报
回复
好像不对!!
haifeng1012 2004-03-27
  • 打赏
  • 举报
回复
上面的都有问题!
看看这个对不??
select a.item ,a.price
from a a,a b
where a.item = b.item and
a.date = max(b.date)
dyuping 2004-03-27
  • 打赏
  • 举报
回复
hehe ~~我理解错误了~~SORRY~~
dyuping 2004-03-27
  • 打赏
  • 举报
回复
SQL> select item,price from c where price=3.46 or price=5.56;

ITEM PRICE
---------- ----------
AA 3.46
BB 5.56
dinya2003 2004-03-27
  • 打赏
  • 举报
回复
怎么不对?主要的意思不就是求出最新的价格吗?这相当于是历史记录表,每次更新的后的日期都是最新的啊。
dyuping 2004-03-27
  • 打赏
  • 举报
回复
不对吧~楼主是要求出
ITEM PRICE
AA 3.45
BB 2.12
不是把日期最近的数据求出~~~~
hm_se 2004-03-26
  • 打赏
  • 举报
回复
你可以建一个视图,用来存放符合你条件的记录,这样速度就不会受影响了
toto99 2004-03-26
  • 打赏
  • 举报
回复
就没有别的方法吗,如果表大这种查询会很慢!!
pwzhu666 2004-03-26
  • 打赏
  • 举报
回复
楼上的对
beckhambobo 2004-03-26
  • 打赏
  • 举报
回复
select item,price from tb_test where (item,drq) in (select item,max(drq) from tb_test group by item);
kerisyml 2004-03-26
  • 打赏
  • 举报
回复
SQL> select * from tb_test;

ITEM PRICE DRQ
---- ------- -----------
AA 3.56 2004-3-26 9
AA 3.45 2004-3-27 9
BB 4.56 2004-3-26 9
BB 5.56 2004-3-27 9
BB 6.56 2004-3-21 9

SQL> select item,price,drq from tb_test where drq in (select max(drq) from tb_test group by item);

ITEM PRICE DRQ
---- ------- -----------
AA 3.45 2004-3-27 9
BB 5.56 2004-3-27 9
kerisyml 2004-03-26
  • 打赏
  • 举报
回复
select item,price from tab_name where date=(select max(date) from tab_name group by item);

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧