mysql關聯表字段做運算出錯
產生原因?
mysql 關聯表不同表做資料統計的時候 ,可能會遇到統計資料出錯。例如:欄位1 - 欄位1 。這個本來就是很正常的運算,如果放在同一張表中會報錯,那就只可能是where條件的兩個非負欄位相減得到一個負數導致的報錯。不過今天不討論這個問題,主要討論的是兩個關聯的表運算導致資料出錯。
瞭解mysql的都知道, 兩張表關聯查詢(特別是外連線查詢)且主表關聯不到從表的資料時,那麼相關的欄位列就會預設為 null (除非在關聯後的where條件過濾掉)。如果不做處理直接:表1.欄位1 - 表2.欄位1( 該欄位出現null ),你會發現統計出來的資料其實是不準確的;可以做如下測試:
select (10 - null) ; // null
得到的是null ; mysql 不同PHP的弱型別會強制轉化為整型
解決
用mysql自帶函式 IFNULL( ) 可以方便解決:
(total_money - IFNULL(valid_money,0) - IFNULL(invalid_money , 0)) as follow_money
通過簡單處理就可以進行方便的運算
相關推薦
mysql關聯表字段做運算出錯
產生原因? mysql 關聯表不同表做資料統計的時候 ,可能會遇到統計資料出錯。例如:欄位1 - 欄位1 。這個本來就是很正常的運算,如果放在同一張表中會報錯,那就只可能是where條件的兩個非負欄位相減得到一個負數導致的報錯。不過今天不討論這個問題,主要討論的是兩個關聯的表運算導致資料
mysql修改表字段編碼,使其支持emoji表情
exception .sql var blog odi utf use pan cor 普通的UTF8編碼是不支持emoji表情插入的,會報異常: Caused by: java.sql.SQLException: Incorrect string value: ‘\xF
MySql設定表字段從指定值開始自增
CREATE TABLE `user` ( `user_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '使用者id', `user_code` varchar(32) NOT NULL COMMENT '使用者賬號', `user_name
mysql資料庫表字段增刪改查及索引的增刪改查
#增加欄位 ALTER TABLE `表名` ADD COLUMN `欄位名` VARCHAR(11) NULL DEFAULT '' comment '測試表id' AFTER `login_cou
mysql修改表字段名稱
修改表字段名格式如下: alter table 表名 change column 舊欄位名 新欄位名 [約束條件]; alter table MESSAGE change column LeaveMessageTime CREATED_TIME timestamp;
Java實體類的屬性型別與mysql資料庫表字段型別對應表
感謝原文博主https://blog.csdn.net/Hyo555/article/details/81943340 還有些經常用到的mysql語句 -- 新增表結構 DROP TABLE IF EXISTS `servicnn`; CREATE TABLE `servin` ( `id` i
mysql 修改表字段預設值
alter table 表名 alter column 欄位名 drop default; (若本身存在預設值,則先刪除) alter table 表名 alter column 欄位名 set default 預設值;(若本身不存在則可以直接設定)ALTER TABLE
mysql 為表字段增加唯一約束
為表中的欄位增加唯一約束 alter table add unique(欄位名稱) 或 alter table add CONSTRAINT 約束名稱 UNIQUE (column1,column
mysql bigint型別時間做運算
bigint型別時間轉date型別: DATE_FORMAT(FROM_UNIXTIME(start_time/1000),’%Y-%m-%d %H:%i:%S’) as start_time, DATE_FORMAT(FROM_UNIXTIME(end_tim
mysql 查詢表字段作為其中引數插入到另一表的儲存過程
表 m_sp 中一個欄位sp_id,關聯另一個m_sp_k 表,B表是後期加的,導致m_sp_k 表中沒有關聯A錶的歷史資料,如下儲存過程便是解決所述問題。 查詢結果迴圈遍歷,結果值作為新的引數插入新表中。 create procedure proc_tmp() BEG
mysql 建立表字段Double型別長度
mysql> create table MyClass( > id int(4) not null primary key auto_increment, > name char(20) not null, > sex int
MySQL 建表字段長度的限制
root@localhost : test 10:30:54>CREATE TABLE tb_test ( -> recordid varchar(32) NOT NULL, -> areaShow varchar(10000) DEFAULT NULL, -&
MySQL--修改表字段
ont spa hang 執行 chang mod 類型 add int ##========================================================================## ## 修改表字段 ## CHANGE和MO
Mysql數據庫一個表字段中存了id,並以逗號分隔,id對應的詳細信息在另一個表中
l數據庫 cat sel left 現在 籃球 sql group 查詢 有兩張表, 一張為愛好表b表 一張為用戶表 u表 u表 id 名稱 愛好Id 1 張三 1,2,3,4 2 李四 2,5 b表 id 名稱 1 打乒乓
mysql數據庫表字段使用DESC等關鍵字報錯及解決方法
直接 方式 sel max desc base 字段名 字段 方法 <!-- desc是MySQL數據庫的關鍵字,作為字段名直接使用會報錯 --><sql id="Base_Column"> id,mol,ip,port,name,t.desc,m
mysql 不同庫不同表字段數據復制
upd 報錯 另一個 tid null manager inner target cau 需求:把一個表某個字段內容復制到另一張表的某個字段。 實現sql語句1: UPDATE file_manager_folder f1 LEFT OUTER JOIN file_ma
Mysql DBA 高級運維學習筆記-增刪表字段更改表名刪除表實戰
inno varchar 添加 語句 alter dup mysq def 運維 9.12 增刪改表字段 9.12.1 命令語法及默認添加用演示 1.命令語法: alter table 表名 add 字段 類型 其他 2.測試表數據 mysql> show creat
TSQL:A表字段與B表中的關聯,關聯條件中一列是隨機關聯的實現方式
sql values order srp and eat 2.6 pre art A表字段與B表中的關聯,關聯條件中一列是隨機關聯的實現方式 1 create table test( 2 rsrp string, 3 rsrq string, 4 tke
Mysql數據表字段設置了默認值,插入數據後默認字段的值卻為null,不是默認值
才會 默認 自動 nbsp tis 數據 過濾 工具 持久 我將mysql的數據表的某個字段設置了默認值為1,當向該表插入數據的時候該字段的值不是默認值,而是null。 我的錯誤原因: 對數據庫的操作我使用了持久化工具mybatis,插入數據的時候插入的是整個實體,直接
MySQL表字段類型哪些
blob mss 想要 高版本 mys 進制 並且 小寫 哪些 MySQL使用許多不同的數據類型,總體上分為三類:數字,日期,時間和字符串類型,下面講述分別對應的數據類型1,數字數據類型 INT - 正常大小的整數,可以帶符號。如果是有符號的,它允許的範圍是從-214748