为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕桂英3389331 2019-03-06 03:58:25
查询条件是两组一对一的数据,第一组是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才能确定一个条目,怎么才能一次查出 貌似有点复杂,想不出来如何实现啊表是这样! 相当于要把这些查询合并在一起 并且要在整个结果集中按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='装饰类' ++++++++加上++++++++再加上 表如下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);
查看完整描述

2 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

需求不清,陈述混乱
也不知道你价格排序是所有一起排序还是分类内部排序,sql自己看吧

SELECT * FROM 'order' where (productid,type) in ((1,'裤子类'),(3,'裤子类'),(2,'衣服类'),(2,'装饰类')) order by type,price;
查看完整回答
反对 回复 2019-03-18
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

你的意思我感觉可能是指同时按照productid和type进行分组吧?

SELECT productid, type FROM order WHERE group by productid, type;
-- 非sql_mode严格模式下,你可以直接使用,因为每组只存在一条数据,所以这样的数据是正确可信的
SELECT * FROM order WHERE group by productid, type;

不知道是不是你的意思,理解错了请指出。。

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 642 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信