Note to Self

自分用のメモ置き場

MySQLで特定のカラムが存在しないテーブル名を特定する

「deleteDate」が無いテーブルを特定したかったが、苦戦したのでメモ

USE information_schema;

SELECT
    temp1.table_name
FROM
    (
        SELECT DISTINCT table_name FROM columns
        WHERE table_schema = 'DB名' AND column_name != 'deleteDate'
    ) AS temp1 
LEFT OUTER JOIN
    (
        SELECT DISTINCT table_name FROM columns
        WHERE table_schema = 'DB名' AND column_name = 'deleteDate'
    ) AS temp2
ON temp1.table_name = temp2.table_name
WHERE
    temp2.table_name IS NULL;

おまけ

テーブル一覧を取得する

SHOW TABLES FROM 'DB名';

-- または

SELECT table_name, table_type, engine FROM information_schema.tables WHERE table_schema = 'DB名';

テーブルのカラム一覧を取得する

SHOW COLUMNS FROM 'テーブル名';

テーブル一覧とカラム一覧を取得する

USE information_schema;

SELECT table_name, column_name FROM columns WHERE table_schema = 'DB名';