MySQLの軽めのチップス

MySQL

以下は、今回利用するテーブルである。

CREATE TABLE section2.Address1(
  name VARCHAR(32) NOT NULL,
  phone_nbr VARCHAR(32) NOT NULL,
  address VARCHAR(32) NOT NULL,
  sex VARCHAR(32) NOT NULL,
  age BIGINT);

CREATE TABLE Address2(
  name VARCHAR(32) NOT NULL,
  phone_nbr VARCHAR(32) NOT NULL,
  address VARCHAR(32) NOT NULL,
  sex VARCHAR(32) NOT NULL,
  age BIGINT);

INTERSECT

以下の相関サブクエリで行う。

SELECT name
FROM Address1 AS a
WHERE EXISTS (SELECT 1 FROM Address2 AS b WHERE a.name = b.name LIMIT 1);

EXCEPT

以下の左結合で行う。

SELECT a.name
FROM Address1 AS a
LEFT JOIN Address2 AS b ON a.name = b.name
WHERE b.name IS NULL;