日別アーカイブ: 2021年10月9日

MySQL(その12 inner join,記述順序と実行順序)

その11から続きます。

1:内部結合(inner join)

例:ユーザー一覧を取得したい!都道府県IDで出力されてもよくわからないので都道府県名も表示したい!

select
 users.id,
 users.last_name,
 users.first_name,
 prefectures.name
from users
inner join
prefectures
on users.prefecture_id = prefectures.id;

※ポイント

まず名字と名前と県IDを取得
select id, last_name, first_name, prefecture_id from users;
次にprefecture_id都道府県名(prefectures.nane)を結びつける(inner join on)

短く書くこともできる

select
 u.id,
 u.last_name,u.first_name, p.name
from
 users as u
inner join
 prefectures as p
 on u.prefecture_id = p.id;

さらに短く書くこともできる(asを省略)

select
 u.id,
 u.last_name,u.first_name, p.name
from
 users u
inner join
 prefectures p 
on u.prefecture_id = p.id;

さらにさらに短くもできる。(innerを省略)

続きを読む

MySQL(その9.5 日付や時刻の表し方)

その9から続きます。

日付と時刻の演算

現在の日付 (current_date)

select current_date();

現在の時刻 (current_timestamp)

select current_timestamp();

n日後の日付

select current_date() + 3;

n日前の日付

select current_date() – 3;

x時間後の時刻

select current_timestamp() + interval 6 hour;

x時間前の時刻

select current_time() – interval 6 hour;

extract 日付や時刻の特定の部分 (年や月)までを取り出す

orders テーブルから注文日時(order_timeカラム)、
2017年01月のレコードを取得する。

select * from orders where extract(year_month from order_time)=201701;

ordersテーブルから
注文日時(order_timeカラムが)、2017年のレコードを取得する。

select * from orders where
extract(year from order_time)=2017;

orders テーブルから注文日時(order_timeカラムが)、
1月のレコードを取得する。

select
*
from
orders
where
extract(month from order_time)=1;

その10に続きます。