mysql - 對于只有兩個字段(其中 一個為id)不重復(fù)的數(shù)據(jù)如何過濾
問題描述
如下有一個角色表,如何查詢名為‘jc’的所有角色(不分大小寫),并且取出等級最高的數(shù)據(jù)
問題解答
回答1:多虧了@GoldyMark的啟發(fā),使用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,還需要等級為一個子查詢的結(jié)果,這個子查詢查詢出最高的等級
回答3:所以,你是想要所有role_name=’jc’的數(shù)據(jù)呢?還是所有role_name=’jc’ AND level = MAX(level)呢?假設(shè)你問的是后者,如下:
SELECT * FROM roles AS aWHERE a.role_name = ’jc’ --mysql默認(rèn)不區(qū)分大小寫,除非字段顯式設(shè)定了AND a.level IN (SELECT max(b.level) FROM roles AS bWHERE b.role_name = ’jc’)
避免子查詢的方法就是先把子查詢的結(jié)果集查出來,然后在程序里把max(level)匹配進(jìn)去原來的sql,這樣你只需要維護(hù)兩條簡單的sql,而不是一條復(fù)雜的sql(這里的復(fù)雜只是相對而言,實(shí)際應(yīng)用中應(yīng)該盡量避免書寫復(fù)雜的sql)。
相關(guān)文章:
1. 如何解決docker宿主機(jī)無法訪問容器中的服務(wù)?2. angular.js - 輸入郵箱地址之后, 如何使其自動在末尾添加分號?3. javascript - 如何使用nodejs 將.html 文件轉(zhuǎn)化成canvas4. javascript - html5的data屬性怎么指定一個function函數(shù)呢?5. docker-compose中volumes的問題6. 在mac下出現(xiàn)了兩個docker環(huán)境7. python - Scrapy存在內(nèi)存泄漏的問題。8. javascript - 后臺管理系統(tǒng)左側(cè)折疊導(dǎo)航欄數(shù)據(jù)較多,怎么樣直接通過搜索去定位到具體某一個菜單項位置,并展開當(dāng)前菜單9. angular.js - $stateChangeSuccess事件在狀態(tài)跳轉(zhuǎn)的時候不執(zhí)行?10. java如何生成token?
