文章詳情頁
mysql - 對于只有兩個字段(其中 一個為id)不重復的數據如何過濾
瀏覽:95日期:2022-06-20 09:38:50
問題描述
如下有一個角色表,如何查詢名為‘jc’的所有角色(不分大小寫),并且取出等級最高的數據
問題解答
回答1:多虧了@GoldyMark的啟發,使用max(level)可以解決該類問題
select role_id, role_name, role_job, create_time, MAX(`level`) FROM tb_role where role_name = ’jc’ GROUP BY role_id;回答2:
where中除了名字為jc,還需要等級為一個子查詢的結果,這個子查詢查詢出最高的等級
回答3:所以,你是想要所有role_name=’jc’的數據呢?還是所有role_name=’jc’ AND level = MAX(level)呢?假設你問的是后者,如下:
SELECT * FROM roles AS aWHERE a.role_name = ’jc’ --mysql默認不區分大小寫,除非字段顯式設定了AND a.level IN (SELECT max(b.level) FROM roles AS bWHERE b.role_name = ’jc’)
避免子查詢的方法就是先把子查詢的結果集查出來,然后在程序里把max(level)匹配進去原來的sql,這樣你只需要維護兩條簡單的sql,而不是一條復雜的sql(這里的復雜只是相對而言,實際應用中應該盡量避免書寫復雜的sql)。
相關文章:
1. angular.js - angularjs 使用鼠標懸停時,標簽一直閃2. 一個走錯路的23歲傻小子的提問3. c++ - win764位環境下,我用GCC為什么指針占8個字節,而long是4個字節?4. html5 - HTML代碼中的文字亂碼是怎么回事?5. node.js - 函數getByName()中如何使得co執行完后才return6. python - django 里自定義的 login 方法,如何使用 login_required()7. android - 安卓activity無法填充屏幕8. python 計算兩個時間相差的分鐘數,超過一天時計算不對9. javascript - SuperSlide.js火狐不兼容怎么回事呢10. java - 安卓電視盒子取得了root權限但是不能安裝第三方應用,請問該怎么辦?
排行榜
