1、存在插入,不存在更新(1)
INSERT INTO test ( ID, NAME, PASSWORD )
VALUES
( 1, "test", "test" )
ON DUPLICATE KEY UPDATE NAME = "test",
PASSWORD = "test"
2、存在插入,不存在更新(2)
REPLACE INTO test ( ID, NAME, PASSWORD )
VALUES
( 1, "test", "test" )
根据他人实验评估,INSERT INTO
和REPLACE INTO
的性能近乎相同,详情可见此博客。相比而言,INSERT INTO ... ON DUPLICATE KEY UPDATE ...
的性能较为低下。
3、按月查询
SELECT
count( * ) AS con,
DATE_FORMAT( createTime, '%Y年%m月' ) AS MONTH
FROM
test
WHERE
1 = 1
GROUP BY
DATE_FORMAT( createTime, '%Y-%m' )
如果时间是Unix时间戳,需要转换格式,采用FROM_UNIXTIME()
方法
SELECT
count( * ) AS con,
DATE_FORMAT( FROM_UNIXTIME( createTime ), '%Y年%m月' ) AS MONTH
FROM
test
WHERE
ID = 1
GROUP BY
DATE_FORMAT( FROM_UNIXTIME( createTime ), '%Y-%m' )
如果数据库中时间是Unix时间戳,可以采用UNIX_TIMESTAMP()
方法将时间日期转换成Unix时间戳
UNIX_TIMESTAMP("2019-03-05 12:00:00");
4、按照不同条件获取SELECT结果
SELECT
id,
name,
password,
( CASE WHEN id = 1 THEN '管理员' ELSE '普通用户' END ) AS user_type,
( CASE WHEN id % 2 = 0 THEN '女性用户' ELSE '男性用户' END ) AS user_sex
WHERE
1 =1
此方法可以根据同一个字段数据的不同取值,设置不同的字段,获取不同的结果
SELECT
id,
NAME,
PASSWORD,
sex,
( CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未知' END )
WHERE
1 =1
也可以判断特定值,根据值的不同设置不同的数据
待定…