-
MySQLでメールアドレスからドメイン名を抽出するクエリの書き方
MySQLでメールアドレス(email-id)からドメイン名を抽出したい場合は、SUBSTRING_INDEX()関数を使用します。まずはサンプル用のテーブルを作成しましょう。mysql> create table DemoTable-> (-> UserMailId varchar(100)-> );Query OK, 0 rows affected (0.68 sec)次に、INSERTコマンドを使ってテーブルにレコードを挿入します。mysql> insert into DemoTable values(John@gmail.com);Query OK, 1
-
アポストロフィを含むレコードを検索するMySQLクエリの書き方
MySQLでは、「Sams」や「Davids」のようにアポストロフィ(シングルクォート)を含む文字列データを扱うことがよくあります。アポストロフィは文字列の区切り記号として認識されるため、そのままでは正しく挿入や検索が行えません。本記事では、エスケープ処理の基本と、アポストロフィを含むレコードを検索するクエリを、実際の実行例とともにわかりやすく解説します。 サンプルテーブルの作成 まず、検索対象となるテーブルを作成します。 mysql> create table DemoTable -> ( -> Name varchar(100) -> );
-
MySQLでテーブルから上位2つの最大値を取得する方法
MySQLでテーブルから最も大きい値の上位2件を取得したい場合は、ORDER BY句とLIMIT句を組み合わせて使用します。カラムを降順(DESC)で並べ替え、LIMIT 2を指定することで、上位2件のみを効率的に取得できます。基本構文select * from yourTableName order by yourColumnName DESC LIMIT 2;実際に試してみようまずはサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> Value int  
-
MySQLで3番目のカラムの値に基づいて2つのカラムから1つを選択する方法
MySQLでは、IF() 関数を使うことで、あるカラム(3番目のカラム)の値を条件として、他の2つのカラムからどちらか一方を選択して表示できます。ここでは具体的な手順をサンプルコード付きで解説します。1. サンプルテーブルの作成まず、CREATE TABLE文でテーブルを作成します。mysql> create table DemoTable-> (-> PlayerName varchar(100),-> PlayerScore int,-> PlayerStatus varchar(100)-> );Query OK, 0 rows affected (0
-
【MySQL】複数の列から最大値を取得する方法 ― GREATEST()関数の使い方
1行の中に格納された複数の列(カラム)から最大値を取得したい場合、MySQLではGREATEST()関数を使用します。MAX()関数が「行をまたいだ集計」に使われるのに対し、GREATEST()は「同一行内の複数列」を比較して最も大きい値を返す点が特徴です。サンプルテーブルの作成まず、3つの整数型カラムを持つテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Value1 int, -> Value2 int, -> Value3 int -> );Query OK, 0 row
-
MySQLのSELECT文でJSONオブジェクトの値を抽出・検索する方法(json_extract活用術)
MySQLでは、SELECT文の中でJSONオブジェクトに格納された値をそのまま条件として利用できます。鍵となるのがjson_extract()関数です。この記事では、実際にテーブルを作成し、JSON型カラムの値を抽出して検索する手順を順番に解説します。 1. JSON型カラムを持つテーブルを作成する まず、JSON型のカラムを含むテーブルを作成します。 mysql> create table DemoTable -> ( -> Data json -> ); Query OK, 0 rows affected (0.63 sec) Dataカラ
-
MySQLで日時の値が明日の日付と一致しているかどうかを確認する方法
MySQLで日時(datetime)の値が「明日」の日付と一致するかどうかを確認するには、DATEDIFF()関数を使用するのが便利です。ここでは、実際にテーブルを作成し、サンプルデータを使いながら手順を解説します。テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> ShippingDate datetime -> );Query OK, 0 rows affected (0.90 sec)レコードの挿入続いて、INSERTコマンドを使っていくつかのレコードを追加します。mysql
-
MySQLでSTR_TO_DATEの別名(エイリアス)が見つからない場合の対処法:HAVING句の活用
MySQLでは、WHERE句の中でSELECT文で定義した列の別名(エイリアス)を参照することができず、「Unknown column」エラーが発生することがあります。このような場合、HAVING句を使うことで問題を解決できます。実際にサンプルを見ながら確認していきましょう。1. テーブルの作成まず、テーブルを作成します。ここでは日付を文字列(varchar型)として格納するテーブルを用意します。mysql> create table DemoTable -> ( -> AdmissionDate varchar(100)
-
MySQLで30日より古い行をすべて削除するクエリの書き方
30日より古いデータを一括で削除したい場合、MySQLでは DELETE文 に INTERVAL を組み合わせることで簡単に実現できます。比較演算子「<」を now() と併用すれば、現在日時よりも前のレコードをすべて削除対象として取得できます。 サンプルテーブルの作成 まずは動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> UserMessage text, -> UserMessageSentDate date -> ); Query OK, 0 rows
-
MySQLで降順ソート時に最初の行を除外して残りの行を取得する方法
MySQLでデータを降順に並べたとき、最初の行(最大値のレコード)を除外し、それ以外の行だけを取得したいケースはよくあります。この記事では、NOT IN句とMAX()関数を組み合わせたサブクエリを使って実現する方法を解説します。 サンプルテーブルの作成 まず、テーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Amount int -> ); Query OK, 0 rows affected (0.50 sec) レコードの挿入 次に、INSERTコマンドを使ってテーブルにいくつかのレコードを
-
MySQLで重複を除いた個別の値の件数をカウントする方法
MySQLで個別の値の件数をカウントする方法MySQLでは、COUNT(DISTINCT カラム名) を使うことで、重複を除外した上で値の種類数を数えることができます。ここでは、サンプルテーブルを作成し、実際に個別の値の件数を取得するまでの手順を具体的に解説します。1. テーブルの作成まず、以下のコマンドでテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Name varchar(100), &nbs
-
MySQLでテーブルの最大IDに関連付けられたデータを取得する方法
最大値のレコードを取得する基本的な考え方MySQLのテーブルから最も大きい値(最大ID)を持つレコードを取得したい場合は、ORDER BYで降順(DESC)に並べ替え、LIMITで先頭の行だけを取り出すのが定番の手法です。select *from yourTableName order by yourColumnName DESC LIMIT 1;なお、「LIMIT 1,1」と指定すると先頭の1行を読み飛ばして次の行を取得するため、結果として2番目に大きい値が返ります。「最大値そのもの」なのか「2番目に大きい値」なのか、目的に応じて使い分けましょう。サンプルテーブルの作成まずは動作確認用のテー
-
MySQLのvarchar型カラムから最大値を取得する方法
MySQLでvarchar型のカラムから最大値を取得したい場合、MAX()関数とSUBSTRING()関数を組み合わせて使用します。varchar型は文字列として比較されるため、単純にMAX()を使うだけでは意図した結果が得られないケースがあります。ここでは、実際にテーブルを作成しながら手順を確認していきましょう。サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable -> ( -> Id varchar(200) -> ); Query OK, 0 rows affected (
-
MySQLで値の出現回数をカウントし、降順に並べた新しい列として表示するクエリの書き方
MySQLで列内の各値が出現する回数を集計し、その結果を降順に並べ替えて表示したい場合があります。降順に並べ替えるには ORDER BY 句に DESC キーワードを組み合わせます。また、値の個数を数えるには COUNT() 関数を使用します。例えば、「John」という名前が列に3回出現している場合、別の列にはカウント値「3」が表示されます。このようにして求めたすべてのカウント値を、ORDER BY DESC を使って降順に並べ替えることができます。それでは、実際にテーブルを作成してみましょう。mysql> create table DemoTable -> ( ->
-
MySQLのUPDATE実行時に特定の値を超える増加を防ぐ方法
MySQLで値を更新する際、「特定の上限値を超えてはいけない」という制約をつけたいケースはよくあります。そんなときに便利なのがLEAST()関数です。LEAST()関数は引数の中で最も小さい値を返すため、更新後の値が上限を超えそうになった場合でも、自動的に上限値に制限することができます。この記事では、具体的なサンプルを使って手順を解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable-> (-> Value int-> );Query OK, 0 rows affected (0.54
-
MySQLのレコードに桁区切り(3桁ごとのカンマ)を表示する方法
MySQLでは、数値データに3桁ごとのカンマ(桁区切り文字)を挿入して表示したい場合、FORMAT()関数を使用します。この関数を使うと、金額などの大きな数値を読みやすい形式に整形できます。ここでは、実際にテーブルを作成して動作を確認してみましょう。1. サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable-> (-> Amount DECIMAL(10,2)-> );Query OK, 0 rows affected (0.45 sec)2. レコードの挿入次に、INSERT文を使ってサンプルデータを
-
MySQLで1980年〜1996年生まれのユーザーの割合(パーセンテージ)を求める方法
MySQLでは、SUM()関数とCOUNT()関数を組み合わせることで、特定の条件に該当するレコードの割合(パーセンテージ)を簡単に算出できます。この記事では、生年月日が1980年から1996年の間であるユーザーの割合を求める方法を、具体的なサンプルとともに分かりやすく解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable-> (-> DateOfBirth varchar(100)-> );Query OK, 0 rows affected (0.55 sec)データの挿入次に、INSERT
-
MySQLで特定の件数のランダムな行を取得する最も効率的な方法とは?
MySQLでテーブルからランダムな行を特定の件数だけ取得したい場合、RAND()関数とLIMIT句を組み合わせるのが最もシンプルで一般的な方法です。ORDER BY RAND()で行をランダムに並べ替え、LIMITで取得件数を制限します。この記事では、実際にサンプルテーブルを作成しながら、具体的な手順を解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Value int -> ); Query OK, 0 rows affected (0
-
MySQLで数値のみの行を抽出するREGEXPクエリの使い方
文字列と数字が混在するデータの中から、数値だけで構成された行だけを取り出したい場合、MySQLのREGEXP演算子を使うのが便利です。正規表現パターン「^[0-9]+$」を指定することで、先頭から末尾まですべてが0〜9の数字で構成されている行のみを絞り込むことができます。 サンプルテーブルの作成 まず、検証用のテーブルを作成します。 mysql> create table DemoTable -> ( -> StudentId varchar(100) &n
-
MySQLでテーブルのタイムスタンプ(TIMESTAMP)フィールドを更新する方法
MySQLテーブルのタイムスタンプフィールドを更新する手順MySQLでは、UPDATE文とNOW()関数を組み合わせることで、TIMESTAMP型のフィールドを簡単に現在の日時へ更新できます。ここでは、具体的なサンプルを使って手順を解説します。1. テーブルを作成するまず、タイムスタンプ型のカラムを持つテーブルを作成しましょう。mysql> create table DemoTable -> ( -> PunchOut timestamp, -> PunchStatus tinyint(1) -> ); Query OK, 0 ro