SQLiteリファレンス
当サイトはSQLiteに関するSQL文やコマンドのリファレンスサイトです。
HOME > Iから始まるSQL文・コマンド

intersect句

複数テーブルの共通するレコードを抽出するSQL文

テーブルの共通するレコードを抽出する方法

テーブルの共通するレコードを抽出するには、intersect句を使用します。

intersect句の書き方

select カラム名 from テーブル名 intersect select・・・。

重複するデータがあった場合は削除されます。

intersect句の使い方

PHPのPDOを使用した例

SQL
<?php
$pdo = new PDO("sqlite:./test.sqlite3");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_TIMEOUT,5);

$pdo->exec("create table a ( id integer , name text )");
$pdo->exec("create table b ( id integer , name text )");
$pdo->exec("insert into a values ( 1 , 'suzuki' ) , ( 2, 'satou' ) , ( 2,'satou' )");
$pdo->exec("insert into b values ( 3 , 'sakuma'  ) , ( 1, 'suzuki') , ( 2,'satou')");

$stmt = $pdo->query("select * from a intersect select * from b");
$result = $stmt->fetchAll();

echo "<pre>";
print_r($result);
echo "</pre>";
?>

SQLiteのGUIツールを使用した例

SQL
C:sq>sqlite3 test.sqlite3
sqlite> .headers on
sqlite> create table a ( id integer , name text );
sqlite> create table b ( id integer , name text );
sqlite> insert into a values ( 1 , 'suzuki' ) , ( 2, 'satou' ) , ( 2,'satou' );
sqlite> insert into b values ( 3 , 'sakuma'  ) , ( 1, 'suzuki') , ( 2,'satou');
sqlite> select * from a intersect select * from b;
id|name
1|suzuki
2|satou