sqlの中のexistsとinの文法と違いを詳しく説明します。
existsとinの違いはとても小さくて、ほぼ同等ですが、sqlの最適化の中では効率の問題を重視しがちです。今日はexistsとinの違いを説明します。
exists文法:
select…fromテーブルwhere exists(サブクエリ)
プライマリクエリの結果をサブクエリの結果において検証し、データがある場合は検証に成功します。チェックに合致し、データを保持します。
(プライマリクエリのデータがサブクエリに存在する場合、クエリは成功しました(検証は成功しました)
このsqlは空に戻ります。サブクエリにはこのようなデータが存在しません。
in構文:
select…fromテーブルwhereフィールドin(サブクエリ)
プライマリクエリのデータが大きい場合は、inを使用します。
サブクエリのデータが大きい場合は、existsを使用します。
たとえば:
ここでsqlの中のexistsとinの文法と違いについての文章を紹介します。sqlの中のexistsとinの文法の違いについては、以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。
exists文法:
select…fromテーブルwhere exists(サブクエリ)
プライマリクエリの結果をサブクエリの結果において検証し、データがある場合は検証に成功します。チェックに合致し、データを保持します。
create table teacher
(
tid int(3),
tname varchar(20),
tcid int(3)
);
insert into teacher values(1,'tz',1);
insert into teacher values(2,'tw',2);
insert into teacher values(3,'tl',3);
たとえば:
select tname from teacher exists(select * from teacher);
このsql文はselect tname from teacherに相当します。(プライマリクエリのデータがサブクエリに存在する場合、クエリは成功しました(検証は成功しました)
このsqlは空に戻ります。サブクエリにはこのようなデータが存在しません。
in構文:
select…fromテーブルwhereフィールドin(サブクエリ)
select ..from table where tid in (1,3,5) ;
select * from A where id in (select id from B);
違い:プライマリクエリのデータが大きい場合は、inを使用します。
サブクエリのデータが大きい場合は、existsを使用します。
たとえば:
select tname from teacher where exists (select * from teacher);
ここで明らかになっているのは、サブクエリーがすべて、データの集約が大きく、existsを使って、効率が高いことです。
select * from teacher where tname in (select tname from teacher where tid = 3);
ここでは明らかにしているように、メインクエリデータの集大は、inを使用し、効率が高い。ここでsqlの中のexistsとinの文法と違いについての文章を紹介します。sqlの中のexistsとinの文法の違いについては、以前の文章を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。