1. 条件判断语句:

     SELECT
     CASE
             2
             WHEN 1 THEN
                 "结果1"
             WHEN 2 THEN
                 "结果2"
             ELSE
                 "结果3"
     END
  2. 获取当前时间:
    SELECT NOW()

  3. 获取当前时间缀:
    SELECT UNIX_TIMESTAMP(NOW())

  4. 时间转时间缀:
    SELECT UNIX_TIMESTAMP('2020-01-01 00:00:00')

  5. 时间缀转时间:
    SELECT FROM_UNIXTIME(1577808000)

  6. 获取明日 00:00 的时间:
    SELECT DATE_FORMAT(DATE_ADD(CURRENT_DATE(),INTERVAL 1 DAY),'%Y-%m-%d %H:%i:%s');

  7. 获取明日 00:00 的时间缀:
    SELECT UNIX_TIMESTAMP(DATE_FORMAT(DATE_ADD(CURRENT_DATE(),INTERVAL 1 DAY),'%Y-%m-%d %H:%i:%s'));

  8. 替换:
    SELECT REPLACE('abc','a','d');

  9. 拼接字符串:
    SELECT CONCAT("a","b","c");

  10. 生成随机数:
    SELECT FLOOR(RAND() * 10000)

  11. 正则:
    WHERE ... REGEXP '[0-9]{4}(-[0-9]{4})?'

  12. 在字符串中搜索值:
    SELECT FIND_IN_SET('a','a,b,c,d');

  13. 根据分组获取最新的一条数据:

    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;
  14. 重复数据处理:

    1. 查找:
      1. 查找全部重复记录:
        SELECT * FROM 表 WHERE 重复字段 IN (SELECT 重复字段 FROM 表 GROUP BY 重复字段 HAVING COUNT(*)>1) ORDER BY 重复字段 ASC;
      2. 过滤重复记录(只显示一条):
        SELECT * FROM 表 WHERE id IN (SELECT MAX(id) FROM 表 GROUP BY 重复字段);
    2. 删除:
      1. 删除全部重复记录(慎用):
        DELETE FROM 表 WHERE 重复字段 IN (SELECT tmp_params FROM (SELECT 重复字段 AS tmp_params FROM 表 GROUP BY 重复字段 HAVING COUNT(*)>1) AS tmp);
      2. 保留重复数据中的一条:
        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