工程技巧(sql、查bug)

2019-09-27  本文已影响0人  榷奕

1. 场景1:表里面的一个字段替换成自己自定义的

(1) 首先要用count(* ) 来造一个num出来,也就是count(* ) ... as xxx ,又由于数据库里面已经存在了一个这样的xxx了,

现在的需求是用这个新造出来的把原来的替换掉,所以select count(*) , PpcpatientInfo. *,语句就要这么写。

也就是自己创造出来的这个xxx要在select * 之前,然后应该是根据Mybatis的赋值规则,先来后到,先搜索出来的这个就把后面的盖掉了。

(2) 使用as xxx可以把名字换掉。换名字这个,一定要换成数据库里面那种风格的,大写,加下划线的那种风格,直接就用要被替换掉的字段的名字,确保一模一样(也就是不要用java实体类字段的名字)。

2. 多表操作

(1) 只要涉及到多表操作,一定要用联结join
(2) insert不存在多表操作,如果要好几张表同时插入,那还真的要写很多条insert,没得商量。
(3) delete可以多表操作,
delete from table1 inner join table2 where table1.xxx = xxx and table2.xxx = xxx
这里把多表一联结然后那个表有什么限制写清楚就行了。
(4) update也可以多表同时更新,
update table1,table2 set table1.xxx = xxx , table2.xxx = xxx
都可以把两个表轻松分开,然后写明白每个表对应的限制条件什么,以及更新哪个表的那些字段。

例:

delete q1 , q2 , q3 , q4 , q5 , q6
from Q_BySysptom as q1
left OUTER join Qaestionnaires as q2 on q1.Questionnaire_ID = q2.Questionnaire_ID
left OUTER join Qanswers as q3 on q1.Questionnaire_ID = q3.Questionnaire_ID
left OUTER join questionnaire_description as q4 on q1.Questionnaire_ID = q4.Questionnaire_ID
left OUTER join Questionnaire_Record as q5 on q1.Questionnaire_ID = q5.Questionnaire_ID
left OUTER join questions as q6 on q1.Questionnaire_ID = q6.Questionnaire_ID
where q1.Questionnaire_ID = #{questionnaireId};

3. 报错500

这个错误是代码内部错误,最简单的是数据类型什么的没处理好,多半问题出在靠近DAO层那附近。如果是数据库那里报的500,插入或者更新出了问题,很有可能是主键冲突(插入的问题)。

4. 视图

多表操作的时候,select逻辑改用视图来做。

5. 更改字段数据类型

首先一般都是要把这个字段所有的值清空,如果不清空的话那些""值就很麻烦。
清空之后转型,然后随便赋个初值。
目前出生日期和age之间的转换目前只会用sql来转换不会用数据库。

上一篇 下一篇

猜你喜欢

热点阅读