分类 "MySQL" 下的文章

问题:ubuntu2404使用命令安装mysql8,默认root无密码,如何解决?

方法:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
FLUSH PRIVILEGES;

拓展:

php7.2连接不上mysql8,也是这样解决

阅读全文

问题:按名称排序,如果名称是数字时,10比2排在前面

解决:order by 时name+1

方法:

select * from classes order by name+1 asc, id asc limit 0, 10;

注:增加“id asc”是因为防止order by和limit一起使用时出错排序错乱

阅读全文

问题:数据量大,分页查询时卡顿,如何解决?

解决:通过join方式,先查询主键,再查询内容

方法:

offset_num = (page - 1) * pagesize
sub_q = select(
    User.id).filter_by(**obj_get).order_by(
    User.id.asc()).offset(
    offset_num).limit(pagesize).subquery()
q = select(
    User.uid, User.username, User.fullname, User.national_id, User.phone, User.email,
    User.gender, User.last_login, User.status, User.create_time,
    User.expire_time).join(sub_q, User.id == sub_q.c.id)
r = await db.execute(q)
return r.all()

阅读全文

问题:数据库中出现好多重复数据,现在需要只保留最先的一条数据

方法:

SELECT
    * 
FROM
    table_name AS ta 
WHERE
    ta.唯一键 <> ( SELECT max( tb.唯一键 )
                  FROM table_name AS tb 
                  WHERE ta.判断重复的列 = tb.判断重复的列 );

阅读全文