記事目次
クリエイターブログ/システム開発
システム開発
SQLテクニック紹介
経緯
社内で定期的に勉強会を開催しているのですが、その中で紹介したSQLのテクニックをまとめました。
概要
紹介するSQLはMySQLを対象としています。
2つのテーブルを同時に更新する
UPDATE
m_users u, m_belongs b
SET
u.id=1, b.user_id = u.id
WHERE
u.upddt=now() AND b.upddt=now()
更新するテーブルやカラムをカンマ区切りで記述することで両方のテーブルが更新されるようになります。
集計した行を横に並べる
SQLで集計した行を、横に並べたい時があります。
この場合、GROUP_CONCAT関数を使用することで実現できます。
GROUPBY句でまとめられた行に含まれている列をDISTINCT句で指定することで横に並んで取得されます。
SELECT
prefecture,
GROUP_CONCAT(DISTINCT city ORDER BY id SEPARATOR ',')
FROM address
GROUP BY prefecture
小計と合計を同時に出力
WITH ROLLUP句を使用することで小計と合計を同時に出力できるので帳票等で役に立ちます。
実行例
SELECT prefecture,SUM(population)
FROM address
GROUP BY prefecture WITH ROLLUP
まとめ
以上、MySQLの書式を例に紹介しましたが
「2つのテーブルの同時更新」、「集計した行を横に並べる」 については書式は異なりますが、SQLServer,Oracleでも同等のことが可能です。