分类 MySql 下的文章

数据表前置条件

  • project_users
uidtag_ids
100001002(NULL)
1(NULL)
100001006(NULL)
100001011["2", "4", "11"]
100001012["2", "4", "7", "11"]
100001013["4", "5", "11", "24", "17", "19"]
100001014["2", "4", "11"]
100001015["4", "9", "11", "10"]
100001016["4", "11", "17"]
100001017["2", "4", "5", "7", "11"]
  • user_tag_types
idnamememo
1合作商
2代理商
3老用户
4奇迹30学员
5灵性之美
6三千面相

  • 编写sql
SELECT xx.uid,tag_ids,GROUP_CONCAT(tag_title) AS 'user_tag_names' FROM 
(
SELECT uid,tag_ids,SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(REPLACE(REPLACE(REPLACE(t1.tag_ids,' ',''),'[',''),']',''),'"',''),',',t2.help_topic_id + 1),',',-1) AS tag_id
FROM user_center.`project_users` t1 JOIN mysql.help_topic t2
WHERE t2.help_topic_id< (LENGTH(t1.tag_ids) - LENGTH(REPLACE(t1.tag_ids,',','')) + 1)
) xx
INNER JOIN (SELECT id,IF(memo='',`name`,memo) AS tag_title FROM user_center.`user_tag_types` ) ut ON ut.id=xx.tag_id
GROUP BY xx.uid
  • 执行结果
uidtag_idsuser_tag_names
10000["9", "10"]工作室成员,免费特权
100001000["4", "11"]奇迹30学员,精品课
100001004["4"]奇迹30学员
100001011["2", "4", "11"]代理商,奇迹30学员,精品课
100001012["2", "4", "7", "11"]奇迹30学员,灵商密码,精品课,代理商
100001013["4", "5", "11", "24", "17", "19"]代理41,奇迹30学员,灵性之美,精品课,现场课到新代理商,代理21

  • sql语句
SELECT * FROM (
SELECT 日期, 人数, (@csum := @csum + 人数) AS 累计人数
FROM (
SELECT DATE_FORMAT(complete_at,'%Y-%m-%d') AS '日期',COUNT(1) AS '人数' FROM `course_order_items` 
WHERE pid=1 AND state=1 AND course_id=235 GROUP BY 日期 ORDER BY 日期 ASC)daily_pnl_view,(SELECT @csum:=0) AS it
) xx
ORDER BY 日期 DESC
  • 返回结果
日期      人数  累计人数  
----------  ------  --------------
2020-06-26      16              42
2020-06-25      21              26
2020-06-24       5               5

linux下mysql8.0重置密码的方法
过程是先设置无密码登录, 把root的密码设为空字符, 在取消无密码登录, 再登录root, 再执行重置密码动作
无密码登录mysql
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables";
systemctl restart mysqld
mysql 回车即可
update mysql.user set authentication_string=''  where User='root';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Abc123456!';

出现了一个诡异的问题, 在SQLyog中执行mysql连接是出现2058错误, 后面还有错误文字编码, 这个是由于加密方式导致的, SQLyog不支持mysql8的用户的默认加密方式

但是在一个开源的mysql工具中正常

解决方法:在命令行下登录 mysql -u root -p 登录你的 mysql 数据库然后 执行这条SQL

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

然后我在用SQLyog中再执行登录就正常了