多组条件同时查询如何简化

很訾 2017-11-02 06:53:45
商品id 和商品类型分别是两个数组,但是一一对应
数组如下:

商品id 商品type
0=>1 0=>'衣服类'
1=>2 0=>'衣服类'
2=>3 0=>'衣服类'
3=>1 0=>'装饰类'
4=>4 0=>'装饰类'
5=>2 0=>'裤子类'

如果分别查询就要查询起码3次,且有多个结果集,有没有办法做成只查询一次且只有一个结果集的
SELECT * FROM `order` WHERE `type` = '衣服类' AND `productid` IN ('1','2','3')
SELECT * FROM `order` WHERE `type` = '装饰类' AND `productid` IN ('1','4')
SELECT * FROM `order` WHERE `type` = '裤子类' AND `productid` IN ('1')

表如下
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, 5, '衣服类', 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);


...全文
148 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2017-11-10
  • 打赏
  • 举报
回复
SELECT * FROM `order` WHERE (`type` = '衣服类' AND `productid` IN ('1','2','3')) or (`type` = '装饰类' AND `productid` IN ('1','4')) or ( `type` = '裤子类' AND `productid` IN ('1'));
greadworld 2017-11-10
  • 打赏
  • 举报
回复
你具体要什么样的结果,描述清楚一点

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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