insert into temp (ids,user_ids ,user_id,phone,type) select '1sd212',u.ids,u.user_ids,u.telephone,1 from ( coupon_dtl cd left join coupon c on cd.coupon_id = c.coupon_id ) left join mst_users u on u.ids = cd.user_ids where u.delete_flag=0 and c.coupon_type=1 and cd.active_state = 1 and datediff(c.coupon_active_date,now()) >= 3;
這句sql提示警告,也可以插入資料,就是一直報警告,求解
uj5u.com熱心網友回復:
檢查一下看你TEMP 表各欄位型別是否跟你后邊的賦值相匹配。uj5u.com熱心網友回復:
匹配,那個 1 用的是decimal接受的,我把其他欄位都都去掉,只留下一個phone插入的也還是報這個錯,不知怎么回事uj5u.com熱心網友回復:
貼出 show create table ... 以供分析。uj5u.com熱心網友回復:
show create tableCREATE TABLE `temp` (
`ids` varchar(50) NOT NULL,
`user_ids` varchar(32) NOT NULL,
`user_id` varchar(32) NOT NULL COMMENT '用戶id',
`type` decimal(10,0) NOT NULL DEFAULT '0' COMMENT '結果型別',
`phone` varchar(32) NOT NULL COMMENT '手機號',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加時間',
PRIMARY KEY (`ids`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='添加定時任務掃描結果表,用于閑時定時掃描需要的結果,存放在此表中'
uj5u.com熱心網友回復:
你還需要貼下select '1sd212',u.ids,u.user_ids,u.telephone,1 from ( coupon_dtl cd left join coupon c on cd.coupon_id = c.coupon_id ) left join mst_users u on u.ids = cd.user_ids where u.delete_flag=0 and c.coupon_type=1 and cd.active_state = 1 and datediff(c.coupon_active_date,now()) >= 3;
涉及到的幾個表的表結構。
可能是select '1sd212',u.ids,u.user_ids,u.telephone,1 from...這中間的幾個欄位的值長度超過了你temp表的欄位的長度,所以報錯的。
uj5u.com熱心網友回復:
這里選的欄位是user表里面的,結構如下:
CREATE TABLE `mst_users` (
`ids` varchar(32) NOT NULL,
`user_ids` varchar(20) NOT NULL COMMENT ,
`user_nm` varchar(20) DEFAULT NULL,
`telephone` varchar(11) DEFAULT NULL COMMENT ,
`user_type` char(1) DEFAULT NULL COMMENT ,
`invite_code` varchar(50) DEFAULT NULL,
沒看到長度問題
uj5u.com熱心網友回復:
沒人恢復了,問題一直沒解決uj5u.com熱心網友回復:
將where條件改成:where u.delete_flag='0' and c.coupon_type='1' and cd.active_state = '1' and datediff(c.coupon_active_date,now()) >= '3;'
即where條件欄位是字符型,均要加上引號。
uj5u.com熱心網友回復:
正解,多謝~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/76702.html
標籤:MySQL
