めも。
SELECT SUM([列名]) FROM [テーブル名];
例。
SELECT SUM(count) FROM logs;
めも。
SELECT SUM([列名]) FROM [テーブル名];
例。
SELECT SUM(count) FROM logs;
めも。
いつもどおりのLIKE文をちょっと変えてやるだけでOK。
まずはいつもの中間一致。
■中間一致
SELECT * FROM table_name WHERE col_name LIKE '%str%';
この場合、文字列中のどこかに「str」が含まれているレコードが取得される。
■前方一致
SELECT * FROM table_name WHERE col_name LIKE 'str%';
対象文字列前の「%」をはずしてやることで「str」から始まるレコードを取得できる。
■後方一致
SELECT * FROM table_name WHERE col_name LIKE '%str';
上記の前方一致に習い、後方一致検索を行う場合は後ろの「%」をはずしてやればよい。これで「str」で終わるレコードを取得できる。
DISTINCT文を用いる。
SELECT DISTINCT [列名], [列名], [列名], ... FROM [テーブル名] WHERE ... ORDER BY ... LIMIT ...
例。
SELECT DISTINCT category FROM items WHERE 1
※上記は重複無しでカテゴリーを全て取得するSQLの例
めも。
極めて文法的なお話。
下記のような名前のテーブルがあるとする。
・table_1
・table_2
・table_3
ほしいカラムは下記とする。
・table_1.col_1
・table_2.col_2
・table_3.col_3
そして。
・「table_1.id」=「table_2」の「table1_id」
・「table_1.hoge_id」=「table_3」の「id」
だったとする。
この場合これらをすべてJOINしようとすると下記のようになる
SELECT t1.col_1, t2.col_2, t3.col_3 FROM table_1 AS t1 LEFT JOIN table_2 AS t2 ON t1.id = t2.table1_id LEFT JOIN table_3 AS t3 ON t1.hoge_id = t3.id
そして、この末端にWHERE、LIMIT、ORDERなどを追加してやればよい。
※この際、複数のテーブル間で同一のカラム名が存在しなかった場合、WHERE句などでテーブル名のプレフィックスを付加してやらなくてもエラーにはならない。っぽい。
自分用めも。
文法。
select * from [DB名].[テーブル名] into outfile "/path/to/output/fileName.csv" fields terminated by ',' enclosed by '"' lines terminated by '\r\n';
例。
select * from mysql.help_topic into outfile "/home/admin/output.csv" fields terminated by ',' enclosed by '"' lines terminated by '\r\n';
一発で生成可能。さすがMySQL。めっちゃ便利。
めも。
IN(value, value, value, …)文を使う。
文法はこんな感じ。
SELECT * FROM [テーブル名] WHERE [カラム名] IN('値1', '値2', '値3');
以下例。
SELECT * FROM sites WHERE id IN(1, 2, 3);
次に否定条件をリストで指定したい場合。
NOT IN(value, value, value, …)文を使う。
SELECT * FROM sites WHERE id NOT IN(1, 2, 3);
超絶自分用めも。
「COUNT()」関数と「GROUP BY」句を使う。
SELECT *, COUNT(site_id) FROM items GROUP BY site_id
わかりやすく書くと下記のような感じ。
SELECT [欲しいカラム名],[欲しいカラム名],[欲しいカラム名], ..., COUNT([数えたいカラム名]) FROM [テーブル名] GROUP BY [数えたいカラム名]
結局わかりずらい。笑
まぁ自分用備忘録として。
今更過ぎるけれどもわからなかったので調べた。
例えば以下のような感じ。
※ここではhogeテーブルとfugaテーブルがあるとする
SELECT h.id, h.name, f.email FROM hoge AS h LEFT JOIN fuga AS f ON h.fuga_id = f.id;
このようにテーブル名のあとに続けて「AS [エイリアス名]」と定義してやることで、それ以外の句ではそのエイリアス名を使用することが出来る。
SELECT句でテーブル名を一々フルで記述しなくてもよくなるので非常に便利。