我建了一张价格表,里面保存了各种商品不同时间的价格,怎么获取每种商品最新的报价?

解决方案 »

  1.   

    CREATE TABLE `price` (
      `Id` int(11) NOT NULL default '0',
      `Price` int(11) NOT NULL default '0',
      `Date` date NOT NULL default '0000-00-00',
      KEY `sp` (`Id`),
      CONSTRAINT `sp` FOREIGN KEY (`Id`) REFERENCES `stock` (`Id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=gbk;
      

  2.   

    CREATE TABLE `stock` (
      `Id` int(11) NOT NULL auto_increment,
      `Type` varchar(40) NOT NULL default '' COMMENT '类别',
      `Name` varchar(40) NOT NULL default '' COMMENT '名称',
      `Brand` varchar(40) NOT NULL default '' COMMENT '品牌',
      `Number` int(11) NOT NULL default '0' COMMENT '数量',
      `Re` varchar(100) default '' COMMENT '备注',
      PRIMARY KEY  (`Id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gbk COMMENT='库存表';
      

  3.   


    select * from price p1 where not exists (select 1 from price p2 where p1.id=p2.id and p1.date < p2.date)
      

  4.   

    price表的id是stock表字段id的外键。现在要求查询出每个商品最新的价格。
      

  5.   

    假设以`Date`为标准:
    select a.* from tt a where not exists(select 1 from tt where `Date`>a.`Date` and `Id`=a.`Id`)
      

  6.   

    select * from price a inner join stock b on a.`id`=b.`id`
    where 
    not exists(select 1 from price where `Date`>a.`Date` and `Id`=a.`Id`)