这样的查询如何实现(两个字段确定一个唯一条目)

查询条件是两组一对一的数据,第一组是productid,第二组是type
比如
productid是     type是
1------------------------裤子类
3------------------------裤子类
2------------------------衣服类
2------------------------装饰类
他们是一对一的关系
然后要对他们的price进行排序

productid有重复的,但是productid和type同时判断就没有重复了
比如type=1,productid=1才能确定一个唯一条目
如果查询单条数据SELECT * FROM order where productid =1 AND type='裤子类';就行了

在productid能确定一个条目的情况下,如果要查询多个条目用SELECT * FROM order where productid in (1,3,5)就可以了

但是productid 和type才能确定一个条目,怎么才能一次查出

貌似有点复杂,想不出来如何实现啊
表是这样!https://img1.mukewang.com/5c8f62890001632803510392.jpg

相当于要把这些查询合并在一起 并且要在整个结果集中按price排序
SELECT * FROM 'order' where productid in (1,3) AND type='裤子类'
SELECT * FROM 'order' where productid =1 AND type='裤子类'
SELECT * FROM 'order' where productid =3 AND type='裤子类'
SELECT * FROM 'order' where productid =2 AND type='衣服类'
SELECT * FROM 'order' where productid =2 AND type='装饰类'

https://img2.mukewang.com/5c8f628b00019cc303300081.jpg++++++++加上
https://img.mukewang.com/5c8f628c0001942403200073.jpg++++++++再加上
https://img.mukewang.com/5c8f628d000177dc03160064.jpg

表如下
CREATE TABLE `order` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`productid` int(10) DEFAULT NULL,
`type` varchar(255) DEFAULT NULL,
`price` int(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;

INSERT INTO `order` VALUES (1, 1, '衣服类', 515);
INSERT INTO `order` VALUES (2, 2, '衣服类', 5154);
INSERT INTO `order` VALUES (3, 3, '衣服类', 4455);
INSERT INTO `order` VALUES (4, 4, '衣服类', 55023);
INSERT INTO `order` VALUES (5, 5, '衣服类', 456);
INSERT INTO `order` VALUES (6, 1, '裤子类', 1651);
INSERT INTO `order` VALUES (7, 2, '裤子类', 164);
INSERT INTO `order` VALUES (8, 3, '裤子类', 111);
INSERT INTO `order` VALUES (9, 4, '裤子类', 1411);
INSERT INTO `order` VALUES (10, 5, '裤子类', 1511);
INSERT INTO `order` VALUES (11, 1, '装饰类', 1054);
INSERT INTO `order` VALUES (12, 2, '装饰类', 156);
INSERT INTO `order` VALUES (13, 3, '装饰类', 167324);
INSERT INTO `order` VALUES (14, 4, '装饰类', 20);
INSERT INTO `order` VALUES (15, 5, '装饰类', 165);

慕桂英3389331
浏览 643回答 2
2回答

富国沪深

需求不清,陈述混乱也不知道你价格排序是所有一起排序还是分类内部排序,sql自己看吧 SELECT * FROM 'order' where (productid,type) in ((1,'裤子类'),(3,'裤子类'),(2,'衣服类'),(2,'装饰类')) order by type,price;

陪伴而非守候

你的意思我感觉可能是指同时按照productid和type进行分组吧? SELECT productid, type FROM order WHERE group by productid, type; -- 非sql_mode严格模式下,你可以直接使用,因为每组只存在一条数据,所以这样的数据是正确可信的 SELECT * FROM order WHERE group by productid, type; 不知道是不是你的意思,理解错了请指出。。
打开App,查看更多内容
随时随地看视频慕课网APP