规范
尽可能不使用单反引号(`),用于表名,字段名
判断条件中必须是布尔型的,否则增加判断条件转换为布尔型
CONVERT函数的参数和mysql的相反,第一个参数是格式,第二个参数是值
CONVERT(123, DECIMAL(12, 2)) ==> CONVERT(DECIMAL(12, 2), 123)CONVERT不支持方法
CONVERT ( DATE_FORMAT( begin_time, '%k%i' ), SIGNED ) ==> CAST ( DATE_FORMAT( begin_time, '%k%i' ) AS INTEGER )输出为map的Mapper中,用””包括别名
GROUP BY中不能使用SELECT中生成的别名(执行顺序:from > on > where > group by > having > select > order by)
group by中字段和select中的不是同一个表中的字段(statisticsOpenData),不全(LabMapper.selectSeatLab)
不是group by列表,[SELECT列表中的非聚合列必须全部出现在GROUP BY子句中]
feedbackList SELECT sf.* FROM sys_feedback sf INNER JOIN sys_feedback_area sfa ON sf.id = sfa.feedback_id WHERE sf.is_del = 0 AND (sf.sys_no = 100 OR sf.sys_no = 0) AND sf.gmt_create BETWEEN '2025-08-09' AND '2025-09-09' GROUP BY sf.id ORDER BY sf.gmt_create DESCgroup by 中不要使用select 中使用的别名
selectTradeDetailsGroupPage select count(distinct if(rtd.trade_type = 1, rtd.order_id, null)) as trade_count, sum(if(rtd.trade_type = 1, rtd.trade_amount, 0)) as trade_amount, sum(if(rtd.trade_type = 2, 1, 0)) as refund_count, sum(if(rtd.trade_type = 2, rtd.trade_amount, 0)) as refund_amount, date_format(rtd.trade_time, '%Y-%m-%d') as stat_time group by stat_time -- 不能用stat_time,要使用rtd.trade_time不支持UNSIGNED/SIGNED
自增长字段名大写处理(达蒙插入时无效列问题)
修改字段名和属性,必须分开,不能用ALTER TABLE CHANGE,可以是哦那个ALTER TABLE ALTER COLUMN和ALTER TABLE MODIFY
ALTER TABLE dev_rec change resv_rec_status resv_status varchar(30) int NULL DEFAULT 0; ==> ALTER TABLE dev_rec ALTER COLUMN resv_rec_status RENAME TO resv_status; ALTER TABLE dev_rec MODIFY resv_status int NULL DEFAULT 0;慎用保留字作为字段或者表名, 比如top(new表中)
mysql json操作符->替代
wfd.form_data -> '$.processType' -- mysql JSON_VALUE(wfd.form_data, '$.processType') -- dm8GROUP_CONCAT函数中ORDER BY替换
-- mysql GROUP_CONCAT(DISTINCT IF(scene_id IS NULL, 0, scene_id) ORDER BY IF(scene_id IS NULL, 0, scene_id) ASC SEPARATOR ',') -- dm8 LISTAGG(DISTINCT COALESCE(payment_method, 0), ',') WITHIN GROUP (ORDER BY COALESCE(payment_method, 0))
达蒙数据库操作
显示所有表
SELECT table_name FROM user_tables;删除所有表
DECLARE table_name VARCHAR2(100); BEGIN FOR r IN (SELECT table_name FROM user_tables WHERE tablespace_name = 'UNIIC') LOOP EXECUTE IMMEDIATE 'DROP TABLE "' || r.table_name || '" CASCADE CONSTRAINTS'; END LOOP; END;
达蒙SQL问题
- Mybatis插入时,提示无效列名,自增长注解字段大小写问题
- 不能使用alter table drop index方式删除索引,只能通过drop index
- 不同通过create table时,内置创建索引,只能通过 create index
- sql导出时,短字符串会导出CHAR(4 char),这种类型会导致插入’0’时,自动在后面添加空格填充,修改成VARCHAR(4 char)就可以了
Flyway问题
- 数据库升级失败后,修改sql语句,删除flyway历史记录中的出错记录,重新运行程序
delete from "flyway_schema_history" where "version"='2.28' - 语句中包含占位符,导致错误(No value provided for placeholder: ${0})
flyway.placeholder-replacement: false
IC中sql问题
- GROUP BY中和SELECT中的不匹配
LabMapper.getArea 少lab_kind
RoomMapper.list 少 rm.open_num
Site中的问题
ID设置了自增属性,同事又直接对此赋值,dm需去掉自增属性
-- site_building,site_campus,site_building_floor,sys_org_position ALTER TABLE site_campus DROP IDENTITY;新建楼层时,小区没有选择时,不能选择楼宇(楼宇列表为空),第二次进来时
数据库对象定义中,字段名为大写(entity/po)
修改关联模块支持dm, 数据库对象定义中,字段名为大写
uni-chat
workflow新建时,检查下拉列表对象是否齐全,不齐全显示入口,可以跳转进行新增
前端编辑框提示问题,不是必须的id问题