条件判断语句:
SELECT CASE 2 WHEN 1 THEN "结果1" WHEN 2 THEN "结果2" ELSE "结果3" END
获取当前时间:
SELECT NOW()
获取当前时间缀:
SELECT UNIX_TIMESTAMP(NOW())
时间转时间缀:
SELECT UNIX_TIMESTAMP('2020-01-01 00:00:00')
时间缀转时间:
SELECT FROM_UNIXTIME(1577808000)
获取明日 00:00 的时间:
SELECT DATE_FORMAT(DATE_ADD(CURRENT_DATE(),INTERVAL 1 DAY),'%Y-%m-%d %H:%i:%s');
获取明日 00:00 的时间缀:
SELECT UNIX_TIMESTAMP(DATE_FORMAT(DATE_ADD(CURRENT_DATE(),INTERVAL 1 DAY),'%Y-%m-%d %H:%i:%s'));
替换:
SELECT REPLACE('abc','a','d');
拼接字符串:
SELECT CONCAT("a","b","c");
生成随机数:
SELECT FLOOR(RAND() * 10000)
正则:
WHERE ... REGEXP '[0-9]{4}(-[0-9]{4})?'
在字符串中搜索值:
SELECT FIND_IN_SET('a','a,b,c,d');
根据分组获取最新的一条数据:
SELECT a.* FROM 表名 AS a, ( SELECT category, MAX( update_time ) AS update_time FROM 表名 GROUP BY category ORDER BY update_time DESC ) AS b WHERE a.category = b.category AND a.update_time = b.update_time ORDER BY a.update_time DESC;
重复数据处理:
- 查找:
- 查找全部重复记录:
SELECT * FROM 表 WHERE 重复字段 IN (SELECT 重复字段 FROM 表 GROUP BY 重复字段 HAVING COUNT(*)>1) ORDER BY 重复字段 ASC;
- 过滤重复记录(只显示一条):
SELECT * FROM 表 WHERE id IN (SELECT MAX(id) FROM 表 GROUP BY 重复字段);
- 查找全部重复记录:
- 删除:
- 删除全部重复记录(慎用):
DELETE FROM 表 WHERE 重复字段 IN (SELECT tmp_params FROM (SELECT 重复字段 AS tmp_params FROM 表 GROUP BY 重复字段 HAVING COUNT(*)>1) AS tmp);
- 保留重复数据中的一条:
DELETE FROM 表 WHERE id NOT IN (SELECT ids FROM (SELECT MAX(id) AS ids FROM 表 GROUP BY 重复字段) AS tmp);
- 删除全部重复记录(慎用):
- 查找:
文档更新时间: 2024-04-20 10:57 作者:lee