差集資料庫
『壹』 php 2個二維數組 如何判斷差集
<?php
$a=[
["sbnumber"=>"0513-0001-00001","name"=>"心安苑"],
["sbnumber"=>"0513-0001-00002","name"=>"中正苑"],
["sbnumber"=>"0513-0001-00003","name"=>"務實苑"],
["sbnumber"=>"0513-0001-00004","name"=>"服務苑"],
["sbnumber"=>"0513-0001-00005","name"=>"張三"]
];
$b=[
["sbnumber"=>"0513-0001-00001","name"=>"心安苑"],
["sbnumber"=>"0513-0001-00002","name"=>"中正苑"],
["sbnumber"=>"0513-0001-00003","name"=>"務實苑"],
["sbnumber"=>"0513-0001-00004","name"=>"服務苑"],
["sbnumber"=>"0513-0001-00007","name"=>"李四"]
];
$cmp=function($av,$bv){
$r=strcmp($av['sbnumber'],$bv['sbnumber']);
return$r===0?strcmp($av['name'],$bv['name']):$r;
};
$c=array_values(array_udiff($a,$b,$cmp));
$d=array_udiff($b,$a,$cmp);
foreach($das&$dv)$c[]=$dv;
unset($d);
var_mp($c);
array(2){
[0]=>array(2){["sbnumber"]=>string(15)"0513-0001-00005"["name"]=>string(6)"張三"}
[1]=>array(2){["sbnumber"]=>string(15)"0513-0001-00007"["name"]=>string(6)"李四"}
}
需要比兩次才能互相比出差集,再合並結果。還有這里的記錄間根據各項內容(比如名字)來確定不同,所以用自定義的對內容的比較規則..
『貳』 資料庫中in的用法
資料庫中in的用法的用法你知道嗎?下面我就跟你們詳細介紹下資料庫中in的用法的用法,希望對你們有用。
資料庫中in的用法的用法如下:
IN:確定給定的值是否與子查詢或列表中的值相匹配。
IN 關鍵字使您得以選擇與列表中的任意一個值匹配的行。
SELECT ProctID, ProctName FROM Northwind.dbo.Procts WHERECategoryID IN (1, 4, 5)
IN 關鍵字之後的項目必須用逗號隔開,並且括在括弧中。
NOT IN:通過 NOT IN關鍵字引入的子查詢也返回一列零值或更多值。
以下查詢查找沒有出版過商業書籍的出版商的名稱。
SELECTpub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHEREtype = 'business')
使用 EXISTS和 NOT EXISTS引入的子查詢可用於兩種集合原理的操作:交集與差集。兩個集合的交集包含同時屬於兩個原集合的所有元素。
差集包含只屬於兩個集合中的第一個集合的元素。
EXISTS:指定一個子查詢,檢測行的存在。
SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT *FROM titles WHERE pub_id = publishers.pub_id AND type =
'business')
SELECTdistinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titlesWHERE type = 'business')
兩者的區別:
EXISTS:後面可以是整句的查詢語句如:SELECT *FROM titles
IN:後面只能是對單列:SELECTpub_id FROM titles
NOT EXISTS:
例如,要查找不出版商業書籍的出版商的名稱:
SELECTpub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id =publishers.pub_id AND type =
'business')
下面的查詢查找已經不銷售的書的名稱:
SELECT titleFROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id =titles.title_id)
例子:
//驗證有發布產品的公司個數
select id,name from company where exists (select * from proct where comid=company.id)
select id,name from company where id in(select comid from proct)
//驗證沒有發布產品的公司個數
select id,name from company where not exists (select * from proct where comid=company.id)
select id,name from company where id not in(select comid from proct)
『叄』 sql資料庫中把兩個表中的差集數據插入到第3個表,怎麼寫
insert into table_3 (column_1,column_2,column_3) select column_1,column_2,column_3 from table_1 minus select column_1,column_2,column_3 from table_2;
要點就是保持欄位一致。
『肆』 資料庫中 查詢結果的 並集,交集是怎麼寫的啊,用的什麼關鍵字
A 並 B 去掉重復記錄----union
select empno, ename ,salary ,deptno from employee_ccy where deptno=10
union
select empno, ename ,salary ,deptno from employee_ccy where salary>100;
--union all 不排序,不去重復
select empno, ename ,salary ,deptno from employee_ccy where deptno=10 union all
select empno, ename ,salary ,deptno from employee_ccy where salary>100;
---交集-----intersect
select empno, ename ,salary ,deptno from employee_ccy where deptno=10
intersect
select empno, ename ,salary ,deptno from employee_ccy where salary>100;
--差集--------minus
select empno, ename ,salary ,deptno from employee_ccy where deptno=10
minus
select empno, ename ,salary ,deptno from employee_ccy where salary>100;
-------------用兩個結果集的差集 ,獲得
select deptno,dname ,location from department_ccy where deptno in(select deptno from department_ccy
minus
select distinct deptno from employee_ccy );
希望對你有幫助