一个单表查询的问题

student_2008 2018-12-28 11:24:27


CREATE TABLE `product_config` (
`product_id` bigint(20) NOT NULL COMMENT '产品ID',
`config_id` bigint(20) NOT NULL COMMENT '产品配置属性ID'
)

INSERT INTO `product_config`(`product_id`, `config_id`) VALUES (4, 7);
INSERT INTO `product_config`(`product_id`, `config_id`) VALUES (6, 2);
INSERT INTO `product_config`(`product_id`, `config_id`) VALUES (6, 7);
INSERT INTO `product_config`(`product_id`, `config_id`) VALUES (6, 14);

想查询出config_id等于2,7,14的product_id,只想要看到product_id=6的记录

...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nayi_224 2018-12-28
  • 打赏
  • 举报
回复
引用 5 楼 student_2008 的回复:
[quote=引用 4 楼 nayi_224 的回复:]
CREATE TABLE product_config  (
  product_id number,
  config_id number,
  create_date date,
  update_date date
) ;

INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (6, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (6, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (6, 14,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (4, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (1, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (1, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (1, 14,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (2, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (3, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (5, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (5, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (5, 14,sysdate,sysdate);

select t1.product_id from product_config t1
where 1 = 1
  and t1.config_id in (2, 7, 14)
group by t1.product_id
having count(distinct t1.config_id) = 3
;

drop table product_config;
这里查出来结果只有一个product_id是2的,想要得到结果应该是6,1,5[/quote]
student_2008 2018-12-28
  • 打赏
  • 举报
回复
引用 4 楼 nayi_224 的回复:
CREATE TABLE product_config  (
product_id number,
config_id number,
create_date date,
update_date date
) ;

INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (6, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (6, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (6, 14,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (4, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (1, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (1, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (1, 14,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (2, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (3, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (5, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (5, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (5, 14,sysdate,sysdate);

select t1.product_id from product_config t1
where 1 = 1
and t1.config_id in (2, 7, 14)
group by t1.product_id
having count(distinct t1.config_id) = 3
;

drop table product_config;




这里查出来结果只有一个product_id是2的,想要得到结果应该是6,1,5
nayi_224 2018-12-28
  • 打赏
  • 举报
回复
CREATE TABLE product_config  (
  product_id number,
  config_id number,
  create_date date,
  update_date date
) ;

INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (6, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (6, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (6, 14,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (4, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (1, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (1, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (1, 14,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (2, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (3, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (5, 2,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (5, 7,sysdate,sysdate);
INSERT INTO product_config(product_id, config_id,create_date,update_date) VALUES (5, 14,sysdate,sysdate);

select t1.product_id from product_config t1
where 1 = 1
  and t1.config_id in (2, 7, 14)
group by t1.product_id
having count(distinct t1.config_id) = 3
;

drop table product_config;
student_2008 2018-12-28
  • 打赏
  • 举报
回复
引用 1 楼 卖水果的net 的回复:
select * from product_config where prodoct_id = 6;

select * from product_config where config_id in(2, 7, 14);

select * from product_config where prodoct_id = 6 and config_id in(2, 7, 14);














INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (6, 2,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (6, 7,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (6, 14,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (4, 7,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (1, 2,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (1, 7,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (1, 14,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (2, 2,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (3, 2,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (5, 2,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (5, 7,now(),now());
INSERT INTO `product_config`(`product_id`, `config_id`,create_date,`update_date`) VALUES (5, 14,now(),now());

这些数据,想得到查询结果就是


student_2008 2018-12-28
  • 打赏
  • 举报
回复
引用 1 楼 卖水果的net 的回复:
select * from product_config where prodoct_id = 6;

select * from product_config where config_id in(2, 7, 14);

select * from product_config where prodoct_id = 6 and config_id in(2, 7, 14);





可能我没描述清楚,现在是这个表有很多记录,想得到config_id同时有2,7,14的所有的product_id
卖水果的net 2018-12-28
  • 打赏
  • 举报
回复
select * from product_config where prodoct_id = 6;

select * from product_config where config_id in(2, 7, 14);

select * from product_config where prodoct_id = 6 and config_id in(2, 7, 14);




17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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