這是資料表的資料 密碼:pwsw
在mysql5.7
select * from
(select * from vinston_unit_practice where `u_id` = 12 and `status` = 1 and `first_id` = 205 and update_time is not null order by update_time desc) vin
group by exercise_design_id
在mysql5.5也輸入此語句,得到的結果集是不一樣的。
我需要的是5.5出來的結果集,查了很久。
在mysql輸入
select @@sql_mode
5.7
strict_trans_tables,no_engine_substitution
5.5
no_auto_create_user,no_engine_substitution
查了一下,是因為5.7啟用了 strict_trans_tables(儲存引擎啟用嚴格模式,非法資料值被拒絕)。
所以導致了資料出現不同,因為我這條語句出現的結果導致了引擎不知道拿哪條,所以預設拿第一條。
解決方案:
我將sql語句改了
select * from vinston_unit_practice where update_time in
(select update_time from
(select exercise_design_id,max(update_time) update_time from vinston_unit_practice where `u_id` = 12 and `status` = 1 and `first_id` = 205 group by exercise_design_id ) a)
或者在5.7裡面,將此模式換為
no_auto_create_user,no_engine_substitution
此方法,我沒有嘗試,但是這個方法認為可行 mysql 嚴格模式 MySql 嚴格模式相關配置
mysql 嚴格模式 mysql的sql mode合理設定 sql mode是個很容易被忽視的變數,預設值是空值,在這種設定下是可以允許一些非法操作的,比如允許一些非法資料的插入。在生產環境必須將這個值設定為嚴格模式,所以開發 測試環境的資料庫也必須要設定,這樣在開發測試階段就可以發現問題.sql ...
MySQL 嚴格模式與非嚴格模式
檢視 mysql 是否是嚴格模式 select sql mode 如果顯示包含 strict trans tables 或 strict all tables,則代表 mysql 開啟了嚴格模式 反之,是非嚴格模式 非嚴格模式是乙個相對概念 對於 innodb 引擎來說,strict trans t...
MySQL的嚴格模式設定
我們剛剛在上面設定了char,tinyint,儲存資料時超過它們的最大儲存長度,發現資料也能正常儲存進去,只是mysql幫我們自動擷取了最大長度。但在實際情況下,我們應該儘量減少資料庫的操作,緩解資料庫的壓力,讓它僅僅只管理資料即可,這樣的情況下就需要設定嚴格模式 show variables li...