2 つのテーブルの同じフィールドの異なるデータ値をクエリする方法
2 つのテーブルの同じフィールドの異なるデータ値をクエリする方法
例:
テーブル 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
テーブル1
------------------------------------- ------ ---------------------
ID名
1 リー
2 チャン
4 ワン
1 90
2 100
select * from table1 t1 left join table2 t2 on t1.id = t2.id
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順に並べて表示されます。
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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

NAVICAT自体はデータベースパスワードを保存せず、暗号化されたパスワードのみを取得できます。解決策:1。パスワードマネージャーを確認します。 2。NAVICATの「パスワードを記憶する」機能を確認します。 3.データベースパスワードをリセットします。 4.データベース管理者に連絡してください。

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQLでテーブルをコピーするには、新しいテーブルの作成、データの挿入、外部キーの設定、インデックスのコピー、トリガー、ストアドプロシージャ、および機能が必要です。特定の手順には、同じ構造を持つ新しいテーブルの作成が含まれます。元のテーブルからデータを新しいテーブルに挿入します。同じ外部キーの制約を設定します(元のテーブルに1つがある場合)。同じインデックスを作成します。同じトリガーを作成します(元のテーブルに1つがある場合)。同じストアドプロシージャまたは関数を作成します(元のテーブルが使用されている場合)。

Passwordが暗号化された形式で保存されているため、MariadbのNavicatはデータベースパスワードを直接表示できません。データベースのセキュリティを確保するには、パスワードをリセットするには3つの方法があります。NAVICATを介してパスワードをリセットし、複雑なパスワードを設定します。構成ファイルを表示します(推奨されていない、高リスク)。システムコマンドラインツールを使用します(推奨されません。コマンドラインツールに習熟する必要があります)。

次のコマンドでmysqlデータベースを表示します。サーバーに接続します:mysql -u username -pパスワードrun showデータベース。すべての既存のデータベースを取得するコマンド[データベース]を選択します。データベース名を使用します。テーブルを表示:表を表示します。テーブル構造を表示:テーブル名を説明してください。データを表示:[テーブル名]から[ *]を選択します。
