// PDOオブジェクトを作成する

$dsn = 'pgsql:host=localhost;dbname=mydatabase';

$username = 'myusername';

$password = 'mypassword';

$options = array(

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION

);

$dbh = new PDO($dsn, $username, $password, $options);

 

// 一時テーブルを作成する

$tmp_table_name = "tmp_mytable_" . time();

$query = "CREATE TEMP TABLE " . $tmp_table_name . " AS SELECT DISTINCT ON (column1, column2, ...) * FROM mytable";

$dbh->exec($query);

 

// 本テーブルを一旦削除する

$query = "DROP TABLE mytable";

$dbh->exec($query);

 

// 一時テーブルから本テーブルを再作成する

$query = "CREATE TABLE mytable AS SELECT * FROM " . $tmp_table_name;

$dbh->exec($query);

 

// 一時テーブルを削除する

$query = "DROP TABLE " . $tmp_table_name;

$dbh->exec($query);

 

// データベース接続を閉じる

$dbh = null;