经过数天的失败,我希望有更多熟练的人可以为我提供解决方案。
我有两个表,一个包含库存,另一个包含库存值。请,您不必评论字段类型等,因为这不是产品开发,我只想了解join和mysql别名。
-- Stocks table:
DROP TABLE IF EXISTS `stocks`;
CREATE TABLE `stocks` (
`stock_id` int(11) NOT NULL AUTO_INCREMENT,
`stock_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`stock_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- Sample records:
INSERT INTO `stocks` VALUES ('1', 'HighTech');
INSERT INTO `stocks` VALUES ('2', 'NanoTech');
INSERT INTO `stocks` VALUES ('3', 'DotCom');
INSERT INTO `stocks` VALUES ('4', 'NewBiz');
-- Values table:
DROP TABLE IF EXISTS `vals`; CREATE TABLE `values` ( `vals_id` int(11) NOT NULL AUTO_INCREMENT, `stock_id` varchar(255) DEFAULT NULL, `stock_value` int(11) DEFAULT NULL, PRIMARY KEY (`vals_id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
-- Sample records:
INSERT INTO `vals` VALUES ('1', '1', '50');
INSERT INTO `vals` VALUES ('2', '1', '700');
INSERT INTO `vals` VALUES ('3', '1', '540');
INSERT INTO `vals` VALUES ('4', '3', '15');
INSERT INTO `vals` VALUES ('5', '3', '44');
INSERT INTO `vals` VALUES ('6', '1', '60');
INSERT INTO `vals` VALUES ('7', '2', '10');
INSERT INTO `vals` VALUES ('8', '3', '53');
可能有100支股票和1000支价值记录。
我想做的是将每张库存与单个(最新)库存值一起打印。对于库存编号3,我要回显“ DotCom”和最新值“ 53”,没有其他值。
哦,是的,您的表名会在此处造成问题,请尝试将其更改为其他名称,例如vals或诸如此类。
这里是
SELECT * FROM stocks S JOIN vals V ON V.vals_id = ( SELECT MAX(vals_id) FROM vals Va WHERE Va.stock_id = S.stock_id )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句