十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
select A.id,A.aaa,A.bbb,B.ccc,B.ddd
創(chuàng)新互聯(lián)專注于西青企業(yè)網站建設,成都響應式網站建設,商城網站開發(fā)。西青網站建設公司,為西青等地區(qū)提供建站服務。全流程按需開發(fā),專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
from A left join B
on A.id=B.id
union
select B.id,A.aaa,A.bbb,B.ccc,B.ddd
from A right join B
on A.id=B.id
步驟
兩個集合的結構要一致,對應的字段數,字段類型
將兩個集合用 UNION ALL 關鍵字合并,這里的結果是有重復的所有集
將上面的所有集 GROUP BY id
最后 HAVING COUNT(id)=1,等于1的意思是只出現了一次,所以這個是差集,如果等于2,那么就是交集
代碼演示
差集
-- 下面的sql有明顯的問題,不過這個只是一個示意,
-- 從一個表中查詢不需要用到交集和差集,條件可以合并在一起直接查詢出來的.能明白意思就好
-- 下面的sql的意思是找到所有非技術部的員工的id,code和name
SELECT a.* FROM(
SELECT id,code,name FROM test_emp
UNION ALL
SELECT id,code,name FROM test_emp WHERE dept='JSB'
)a GROUP BY a.id HAVING COUNT(a.id)=
交集
-- 下面的sql的意思是找到所有技術部年齡大于25的員工
SELECT a.* FROM(
SELECT id,code,name FROM test_emp WHERE age25
UNION ALL
SELECT id,code,name FROM test_emp WHERE dept='JSB'
)a GROUP BY a.id HAVING COUNT(a.id)=2
并集
-- 下面的sql的意思是找到所有技術部的員工和年齡大于30的員工
-- union可以自動去除重復的內容,得到不重復的結果集
SELECT a.* FROM(
SELECT id,code,name FROM test_emp WHERE age25
UNION
SELECT id,code,name FROM test_emp WHERE dept='JSB'
)a
List A;
List B;
for(int i=0;iA.size();i++)
if(!B.contains(A.get(i)))
insert(A.get(i));
select * from table1 t where t.a10 or t.b20
and id not in (select id from table1 m where m.a20 and m.b20)
SELECT * FROM 表名 WHERE stu_nianji like "2010%" and stu_banji like "信管%"
是這個意思嗎?多個條件取交集用AND,取并集用OR,可以舉一反三,祝你好運。