クリエイターブログ/システム開発

システム開発

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でも同等のことが可能です。

最新記事

クリエイターブログの関連リンク