+ -
当前位置:首页 → 问答吧 → 求个简单的查询

求个简单的查询

时间:2011-09-27

来源:互联网



有这俩字段 表名find 怎么求他们集合的差 select b from find where a=1; 
select b from find where a=2;


CREATE TABLE `find` (
  `a` int(10) NOT NULL,
  `b` int(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- 导出表中的数据 `find`
--

INSERT INTO `find` (`a`, `b`) VALUES
(1, 11),
(1, 12),
(1, 13),
(2, 11),
(2, 12);

作者: mafeifan   发布时间: 2011-09-27

就是把b中 a=2没有的13求出来

作者: mafeifan   发布时间: 2011-09-27

minus。。。

作者: dut703   发布时间: 2011-09-27

能否具体点

作者: mafeifan   发布时间: 2011-09-27

你这是什么数据库的

作者: opps_zhou   发布时间: 2011-09-27

SQL code



CREATE TABLE qiduf_0927 (
  a int,
  b int
);

--
-- 导出表中的数据 `qiduf_0927`
--

INSERT INTO qiduf_0927 (a,b) VALUES
(1, 11);
INSERT INTO qiduf_0927 (a,b) VALUES
(1, 12);
INSERT INTO qiduf_0927 (a,b) VALUES
(1, 13);
INSERT INTO qiduf_0927 (a,b) VALUES
(2, 11);
INSERT INTO qiduf_0927 (a,b) VALUES
(2, 12);


--method one
select b from qiduf_0927 where a=1
minus
select b from qiduf_0927 where a=2


--result:
13


--method two:

select a.b from 
(select a,b from qiduf_0927 where a=1)a,  
(select a,b from qiduf_0927 where a=2)b
where  a.b=b.b(+) and b.a is null


--result
13




作者: cosio   发布时间: 2011-09-27

对不起 我这个是mysql。。。的

作者: mafeifan   发布时间: 2011-09-27

select sum(b - a) from find where 条件;
这样不就OK了,哪那么复杂啊

作者: OneShell   发布时间: 2011-09-27

select sum(case find.a when 1 then find.b end)-sum(case find.a when 2 then find.b end) from find


使用case when then end 语句就OK啦

作者: zhujianpengzha   发布时间: 2011-09-27