SQLServerでレコードをランダムに取得するには、
ORDER BY NEWID()
を使う。
MySQL、PostgreSQLは
order by random()
SQLServerでレコードをランダムに取得するには、
ORDER BY NEWID()
を使う。
MySQL、PostgreSQLは
order by random()
日付データ型フィールド TEST
がある場合、
MySQLの場合、
年 YEAR(TEST)
月 MONTH(TEST)
日 DAYOFMONTH(TEST)
で取得可能。
PostgreSQLの場合
年 EXTRACT('year' from TEST)
月 EXTRACT('month' from TEST)
日 EXTRACT('day' from TEST)
で取得可能。
また、今日の日付を取得したい場合、PostgreSQL,MySQLともに、
Now()関数もあるが、CURRENT_DATE
も使える。
PostgreSQLの場合[random()]
select * from テーブル名 order by random() limit 3
MySQLの場合[rand()]
select * from テーブル名 order by rand() limit 3
で、情報を3件ランダムで取得可能。
INSERT INTO テーブル名1 (列1, 列2, 列3) SELECT 列A, 列B, 列C FROM テーブル名2
テーブル名2の列A,列B,列Cの情報をそれぞれテーブル名1の列1,列2,列3に登録。
MySQLとPostGreSQLはSQL実行時にX〜Y行目のデータ取得と範囲設定が可能。
MySQLの場合、
LIMIT 10, 30
で、10件目から30レコード取得出来る。(10行目から30行目では無い事に注意)
PostgreSQLの場合、上記と同じ動作をしたい場合、
LIMIT 30, 10(MySQLとは数値が逆)
もしくは、
OFFSET 10 LIMIT 30
とする。
また、最初からN件取得はどちらも
LIMIT N
でよい。
Xで並び替えて最後からN件取得したい場合、
ORDER BY X LIMIT N
でよい。
INSERT INTO tbl_name (name) VALUES ('value')
SELECT @@IDENTITY AS 'Identity'
で取得できる。
msdnを参考
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_da-db_7msw.asp
条件によってダイナミックにWHERE文に条件を追加して行く場合、
最初の条件にはANDは必要ないけど、ANDをつけた方が余分なif文が出来なくて良くなって書きやすい。
例)
$sql = "select * FROM tbl_user WHERE 0 = 0";
if(isset($_POST['pass'])){
$sql .= " AND password = $_POST['pass']";
}
if(isset($_POST['name'])){
$sql .= " AND name = $_POST['name']";
}
と記述できる。便利ですね。
同じフィールドで2つの条件のそれぞれの合計を抽出
SELECT SUM(CASE WHEN A != '' THEN 1 ELSE 0 END) AS a_not_sum,
SUM(CASE WHEN A = '' THEN 1 ELSE 0 END) AS a_sum
FROM tbl_name WHERE where文;