2 つのテーブルの同じフィールドの異なるデータ値をクエリする方法
例:
テーブル A のフィールド a には 40,000 個のデータがあります
テーブル B のフィールド a には 60,000 個のデータがあり、そのうち 40,000 個のデータはデータはテーブル A のものと同じです。 同じ 20,000 個の異なるデータをクエリするにはどうすればよいでしょうか?
1 2 3 4 5 6 7 8 9 |
|
as table
テーブル1
------------------------------------- ------ ---------------------
ID名
1 リー
2 チャン
4 ワン
1 90
2 100
1 |
|
3 steve 3 70-------------結果------------- id name idスコア
-------------------------------------------------
1 リー 1 90
2 チャン 2 100
- ------------------------
1 | select * from table1 t1 left join table2 t2 on t1 .id = t2.id WHERE t2.id は <code class="sql color1">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
から
bbscs_role_user
どこから
roleid =
'sales'
🎜🎜🎜🎜🎜🎜🎜 🎜🎜 # ---> 11 レコード 🎜🎜 🎜🎜#統計テーブル ( ユーザーの売上レコード テーブル) 🎜🎜🎜🎜🎜🎜1🎜🎜🎜🎜🎜select
refid
from
bbscs_sales_income_stat
where
type = 4
と
月
=
'2012-02'
and
amount != 0
🎜🎜🎜🎜🎜🎜
# ---> 4 レコード
要件は次のとおりです: 他の 7 人の営業スタッフのレコードがこの目的のためにリストされます。
##########これは SQL ステートメント モデル BEGIN##########
1 |
select * from b t2 left join t1 on t1.a1 = t2.b1 WHERE t1 .a1 は 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
(
select
ユーザー ID
from
bbscs_role_user
where code> <code class="sql plain">roleid =
'sales'
) t2 left
🎜結合
(
選択
refid
から
bbscs_sales_income_stat どこ
type = 4
と
月
=
'2012-02' 🎜 <div class="linenumber3 index2 alt2">
<code class="sql color1">and
amount != 0) t1
オン
t2.userid = t1.refid
WHERE
t1.refid
は
null
🎜🎜🎜🎜🎜🎜
# --->7条记录
测试一:
##SQL语句、mysql 查询两个表内の異なる值(主是差值) これこの句には問題も存在する。
1
2
|
select t1.Userid から bbscs_role_user t1 左 参加 code> <code class="sql plain">bbscs_sales_income_stat t2 on t1.userid = t2.refid 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
および t1.roleid = 'sales' および t2.type = 4 および t2. 月 = '2012 -02' and t2.amount != 0 ここで t2.id は null ;
|
select
t1.Userid
から
bbscs_role_user t1
左
参加 <code class="sql plain">bbscs_sales_income_stat t2
on
t1.userid = t2.refid code>🎜🎜<code class="sql color1">および
t1.roleid =
'sales'
および
t2.type = 4
および
t2.月
=
' 2012-02'
および
t2.amount != 0
そして
t2.id
は
null
🎜 🎜🎜🎜🎜🎜##where or and
# --->22 レコード
###より強力な一時テーブル クエリ関数。上記のクエリ結果を全体として出力します。
##はユーザー部門中間テーブルに関連付けられており、部門ID順に並べて表示されます。
t2。 userid = t1.refid
WHERE
t1.refid
は <code class="sql color1">null
) t3, bbscs_org_user t4
where
t3.userid = t4.userid 順序
by
orgId
1
2
3
|
select t4.userid from ( select * から ( select ユーザー ID from bbscs_role_user ここ roleid = 'sales' ) 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 から bbscs_sales_income_stat どこ type = 4 および 月 = '2012-02' および 量 != 0) t1 オン |
以上が2 つのテーブルの同じフィールドの異なるデータ値をクエリする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。