1.查询时报错 create_time can't be null
一遍遍看数据 并未发现null的,将timestap类型改成datetime仍然不行
最后发现数据中 create_time 字段值为0000-00-00 00:00:00 改成正常值即可
疑问? 为什么这个值会被mysql数据库认为是null
未解,但get 到
mysql中时间类型datetime与timestamp的有效范围
datetime 类型取值范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59
timestamp类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59
2.
首先 mysql 的update语句为
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'
再一次需要做更新的情况时 如下:我要根据各种条件查询查出满足条件的a表中的数据 然后再去更新这些数据中的某些属性
sql1:
select DISTINCT(contract_id) as a from class_user where class_user.contract_id in (select id from contract where plan_lesson_count =0 )
sql2:
UPDATE contract SET plan_lesson_count = total_lesson_count WHERE id in sql1
查询时报错:You can't specify target table <tbl> for update in FROM clause
原因:不能先select出同一表中的某些值,再update这个表(在同一语句中)
也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题
故 改造为:
UPDATE contract SET plan_lesson_count = total_lesson_count WHERE id in(select b.a from(select DISTINCT(contract_id) as a from class_user where class_user.contract_id in (select id from contract where plan_lesson_count =0 and contract.type = 2)) b)
参考解决:
https://blog.csdn.net/priestmoon/article/details/8016121
------------------------------------------------------------------------------------------------------------------------------