두 테이블에 있는 동일한 필드의 서로 다른 데이터 값을 쿼리하는 방법
예:
테이블 A의 필드 a에는 40,000개의 데이터가 있습니다.
테이블 B의 필드 a에는 60,000개의 데이터가 있으며 그 중 40,000개의 데이터가 있습니다. 데이터는 테이블 A의 데이터와 동일합니다. 동일한 20,000개의 서로 다른 데이터를 어떻게 쿼리할 수 있습니까?
create table table1(id int,name varchar(10)); create table table2(id int,score int); insert into table1 select '1','lee'; insert into table1 select '2','zhang'; insert into table1 select '3','steve'; insert into table1 select '4','wang'; insert into table2 select '1','90'; insert into table2 select '2','100'; insert into table2 select '3','70';
as table
table1
------------ ------ --------
아이디 이름
1 lee
2 zhang
4 wang
1 90
2 100
select * from table1 t1 left join table2 t2 on t1.id = t2.id
3 steve 3 70-------------결과------------ id 이름 id 점수
---------------------------------
1 lee 1 90
2 zhang 2 100
- -------------
1 | 선택 * from table1 t1 왼쪽 join table2 t2 on t1 .id = t2.id WHERE t2.id 는 null select * from table1 t1 left join table2 t2 on t1.id = t2.id WHERE t2.id is null
|
-------------结果-------------
id name id score
4 wang null null
------------------------------
下面是工作中实际遇到的情况:
##过滤出0销售人员(即没有销售记录的员工信息列表)。
#销售人员(用户角色中间表)
1 |
select userid from bbscs_role_user where roleid = 'sales'
|
# ---> 11条记录
#统计表(用户销售记录表)
1 |
select refid from bbscs_sales_income_stat where type = 4 and month = '2012-02' and amount != 0
|
select
userid
from
bbscs_role_user
여기서
roleid =
'sales'
🎜🎜🎜🎜🎜🎜🎜 🎜🎜 # ---> 11개 레코드 🎜🎜 🎜🎜#Statistics 테이블( 사용자 판매 레코드 테이블) 🎜🎜🎜🎜🎜🎜1🎜🎜🎜🎜🎜select
refid
from
bbscs_sales_income_stat
여기서
유형 = 4 <code class="sql color1">및
월
=
'2012-02'
및
금액 != 0
🎜🎜🎜🎜🎜🎜
# ---> 4개 기록
요건은 다음과 같습니다. 기타 영업사원 7명의 기록을 목적으로 기재합니다.
##########SQL 문 모델입니다 BEGIN##########
1 |
선택 * from b t2 왼쪽 join a t1 on t1.a1 = t2.b1 WHERE t1 .a1 is null select * from b t2 left join a t1 on t1.a1 = t2.b1 WHERE t1.a1 is null
|
#########这个是SQL语句模型 END############
说明:左表是数据多的那个表(基准表如b表)。left join查询。where条件是右边的那个表(a表)某个字段(a1)为Null作为(判断字段)
##将SQL返回结果作为临时表来查询
1
2
3
|
select * from ( select userid from bbscs_role_user where roleid = 'sales' ) t2 left join ( select refid from bbscs_sales_income_stat where type = 4 and month = '2012-02' and amount != 0) t1 on t2.userid = t1.refid WHERE t1.refid is null
|
선택
*
from
(
선택
사용자 ID
from
bbscs_role_user
여기서
roleid =
'판매'
) t2 왼쪽
🎜join
(<code class="sql 키워드">선택
재수정
에서
bbscs_sales_income_stat 여기서
유형 = 4
및
월
=
'2012-02' 🎜 <div class="line number3 index2 alt2">
<code class="sql color1">및
amount != 0) t1
설정
t2.userid = t1.refid
WHERE
t1.reid
is
null
🎜🎜🎜🎜🎜🎜…值) 这个语句查询还是存在问题。
1
2
및 t1.roleid = '판매' 및 t2.type = 4 및 t2. 월 = '2012 -02' 및 t2.amount != 0 여기서 t2.id 는 null ;
|
##表与表,条件与条件独立流来。 select t1.Userid from bbscs_role_user t1 left join bbscs_sales_income_stat t2 on t1.userid = t2.refid
and t1.roleid = 'sales' and t2.type = 4 and t2. month = '2012-02' and t2.amount != 0 where t2.id is null ;
|
##表与表,条件与条件独立出来。
# --->18条记录
测试二:
1
2
|
select t1.Userid from bbscs_role_user t1 left join bbscs_sales_income_stat t2 on t1.userid = t2.refid
and t1.roleid = 'sales' and t2.type = 4 and t2. month = '2012-02' and t2.amount != 0 and t2.id is null # --->18条记录 |
선택
t1.Userid
from
bbscs_role_user t1
left
join <code class="sql plain">bbscs_sales_income_stat t2
설정
t1.userid = t2.refid code>🎜🎜<code class="sql color1">및
t1.roleid =
'판매'
및
t2.type = 4
및
t2.
월
=
' 2012-02'
및
t2.amount != 0
그리고
t2.id
는
null
🎜 🎜🎜🎜🎜🎜##where or and Difference
# --->22 records
###더 강력해진 임시 테이블 쿼리 기능, 위의 쿼리 결과를 전체적으로 넣어보세요.
##은 사용자 부서 중간 테이블과 연관되어 있으며 부서 ID별로 정렬되어 표시됩니다.
1
2
3
|
선택 t4.userid from ( 선택 * from ( 선택 사용자 ID from bbscs_role_user 여기서 roleid = '판매' ) t2 왼쪽 조인 select t4.userid from ( select * from ( select userid from bbscs_role_user where roleid = 'sales' ) t2 left join ( select refid from bbscs_sales_income_stat where type = 4 and month = '2012-02' and amount != 0) t1 on t2.userid = t1.refid WHERE t1.refid is null ) t3, bbscs_org_user t4 where t3.userid = t4.userid order by orgId
( 선택 refid from bbscs_sales_income_stat 여기서 type = 4 및 월 = '2012-02' 및 amount != 0) t1 on |
위 내용은 두 테이블의 동일한 필드에 대해 서로 다른 데이터 값을 쿼리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!