MySQL 中 find_in_set 函数使用方法

FIND_IN_SET(str,strlist) 是一个 MySQL 库函数(大小写都支持),可以直接在 WHERE 中使用,主要作用就是判断前一个字符串常量是否在后者字符串列表变量中。返回在字符串列表匹配到的索引,索引从 1 开始计数,匹配不到返回 0。在 sql 语句中,字段名是一个变量存在,而带入的参数就是常量。强调常量和变量是因为函数只接受这样的类型匹配,其他形式会报错或者查询不到结果。在

PHP 和 MySQL 计算某天是当年的第几周

PHP 直接使用 date() 即可:PHP: date - Manual// after php 4.1.0 $w = date('W'); // 当天 $w1 = date('W', strtotime('2020-07-28')); // 某天MySQL 某天WEEK(date_add('2020-07-28',interval 6 day),2);或者当天weekofyear(curdat

MySQL 日期时间存储类型 datetime、timestamp 以及 int 的联系和区别

大概印象这三个类型都可以用来存储日期时间,datetime 和 timestamp 展现形式如 '2020-07-27 14:25:30',int 则是整型存储秒数,形如 1595852730。个人通常会用 int 类型存储日期时间,一开始是觉得比较方便,因为 time() 获取当前的(与 1970-01-01 08:00:00 间隔的)秒数可以直接存入数据库。显示的时候秒数方便通过 date()

sql 错误:sql 语句 UPDATE xxx SET xxx AND xxx WHERE xxx 不更新内容

这是一个比较容易混淆的 sql 错误,明明感觉语句是对的,更新字段却提示更新记录数为 0。UPDATE xxx_mall SET `is_good`=3 AND `valid_good`=0 WHERE `itemid` IN (2819)UPDATE xx SET 语句在更新多个字段时,应该是英文逗号隔开,而不是用作为组合条件的 AND 来连接。正确写法:UPDATE xxx_mall SET

MySQL 查询两个表的差集

参考文章里作者是这样写的:a 左连接 b,查询 a 中没有的 b 记录select id,`name` FROM a LEFT JOIN (select id as i FROM b) as c ON a.id=c.i where c.i IS NULL;b 左连接 a,查询 b 中没有的 a 记录select id,`name` FROM b LEFT JOIN (select id as i

SQL 中的注释语句

通用单行注释(双减号)-- 创建数据库 typecho create database typecho;通用多行注释(斜杠+星) create database typecho;MySQL 单行注释特别的,MySQL 还支持 # 号标注单行注释# 创建数据库 typecho create database typecho;

MySQL 中 update 与 limit 关键字(关键词)使用限制

问题近两天在改一个 bug,做一个 cron 计划任务,判断并修改过期的用户会员状态。但执行之后用户状态并没有修改。就把 SQL 单独拎出来,放到 navicat(MySQL 连接工具) 里执行一下,果然报错了。UPDATE {$DT_PRE}member SET type = 0 WHERE {$condition} ORDER BY userid DESC LIMIT 0,10000提示 “1

MySQL 锁表和解锁

锁表1.FLUSH TABLE(S) [tbl_name] WITH READ LOCK;这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读(不指定表的情况下)。一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。2.LOCK TABLE(S) tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE};这个

常用的 MySQL 指令

每次查询的时候总是记不住,这次直接做一个总结,算是备忘吧,每次忘记的时候可以回来重温一下修改表名ALTER TABLE table_name RENAME TO new_table_name;修改表自增 ID 起始值alter table users AUTO_INCREMENT=1000;

mysql Error : [Err] 1062 - Duplicate entry '1207543053@qq.com' for key 'email'

问题在执行 insert into 语句的时候,报如题的错误:Duplicate entry '1207543053@qq.com' for key 'email'。一开始看以为是主键冲突,发现 email 并不是主键(主键也是特殊的 unique 索引)。想到 unique 索引。索引如果是 primary、unique 这两种,那么数据表的数据对应的这个字段就必须保证其每条记录的唯一性。否则就