Mysql問題記錄

2022-07-15 05:54:13 字數 1417 閱讀 6844

1.limit分頁運算

limit分頁時不能在分頁中做運算,所以可以這樣寫

set @a=concat('select a.* from (

select

count(1) over() as count,

name,

weight

from

dwd_hospital_region_statistics

where type=2

) a order by a.weight desc limit ',(1-1)*5,',',5,'');

prepare texts from @a;

execute texts;

用concat拼接,然後再去執行。

這樣就可以進行運算了,這個sql還有個計算count的功能,計算這個資料的總數。

當然,如果這樣的話,在mybatis中預設時不能同時執行多條sql的,可以改一下配置

allowmultiqueries=true

如下圖:

2.寫死某個資料值

業務場景:為什麼不用資料型別type,用1234表示不同的型別,因為前端需要可配置,頁面上的具體name需要後端傳過去,並且大部分地方是展示醫廢總量,只有這一處是醫廢收集量

寫法:直接select '你想要的固定值' 字段 from 表名

select year(report_time) as date, sum(num) as num,'醫廢收集量' name from dwd_medical_waste where name = '醫廢總量' group by year(report_time)

結果是

3.資料存在則更新,不存在就新增

重點:判斷資料存在還是不存在的那個欄位要設定成unique索引

用on duplicate key

insert into student(id,value,name) value(12,21,'小李') on duplicate key update name= '李四'

再次執行

5.預編譯 prepare '預編譯名' from sql、編譯execute '預編譯名';

Mysql錯誤問題記錄

incorrect string value xe6 x94 xbe xe5 xa4 xa7.for column name at row 1 query 原因 編碼不匹配。資料庫是latin1編碼,而插入的中文字串是utf 8編碼。解決思路 一 修改資料庫的編碼。這個解決辦法一勞永逸,省去大量的編...

MySQL相關問題記錄

1 mysql三正規化 第一正規化 每個列都不可以再分,也就是說每一列儲存的內容都不可以再拆分,如位址就應該按照省 市 區等分別建立字段,而不應該放在乙個欄位中。第二正規化 在第一正規化的基礎上,非主鍵要完全依賴於主鍵,而不能部份依賴,換句話說就是一張表只能說明乙個事物。第三正規化,在第二正規化的基...

新手MySQL問題記錄

新手mysql問題記錄 程式語言為python,所以使用的庫pymysql。在pymysql中執行插入的方法兩種,一種是execute 另一種是executemany execute sql 直接可以執行sql語句,但是每次操作一次。尤其是執行插入語句時,只能進行一次查詢。executemany s...