mysql - 對(duì)于只有兩個(gè)字段(其中 一個(gè)為id)不重復(fù)的數(shù)據(jù)如何過(guò)濾
問(wèn)題描述
如下有一個(gè)角色表,如何查詢(xún)名為‘jc’的所有角色(不分大小寫(xiě)),并且取出等級(jí)最高的數(shù)據(jù)
問(wèn)題解答
回答1:多虧了@GoldyMark的啟發(fā),使用max(level)可以解決該類(lèi)問(wèn)題
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,還需要等級(jí)為一個(gè)子查詢(xún)的結(jié)果,這個(gè)子查詢(xún)查詢(xún)出最高的等級(jí)
回答3:所以,你是想要所有role_name=’jc’的數(shù)據(jù)呢?還是所有role_name=’jc’ AND level = MAX(level)呢?假設(shè)你問(wèn)的是后者,如下:
SELECT * FROM roles AS aWHERE a.role_name = ’jc’ --mysql默認(rèn)不區(qū)分大小寫(xiě),除非字段顯式設(shè)定了AND a.level IN (SELECT max(b.level) FROM roles AS bWHERE b.role_name = ’jc’)
避免子查詢(xún)的方法就是先把子查詢(xún)的結(jié)果集查出來(lái),然后在程序里把max(level)匹配進(jìn)去原來(lái)的sql,這樣你只需要維護(hù)兩條簡(jiǎn)單的sql,而不是一條復(fù)雜的sql(這里的復(fù)雜只是相對(duì)而言,實(shí)際應(yīng)用中應(yīng)該盡量避免書(shū)寫(xiě)復(fù)雜的sql)。
相關(guān)文章:
1. win10 python3.5 matplotlib使用報(bào)錯(cuò)2. 數(shù)組排序,并把排序后的值存入到新數(shù)組中3. html5 - css3scale和rotate同時(shí)使用轉(zhuǎn)換成matrix寫(xiě)法該如何轉(zhuǎn)換?4. MySQL的聯(lián)合查詢(xún)[union]有什么實(shí)際的用處5. php多任務(wù)倒計(jì)時(shí)求助6. html - css3關(guān)于透明度的問(wèn)題7. python的正則怎么同時(shí)匹配兩個(gè)不同結(jié)果?8. 默認(rèn)輸出類(lèi)型為json,如何輸出html9. mysql 遠(yuǎn)程連接出錯(cuò)10060,我已經(jīng)設(shè)置了任意主機(jī)了。。。10. 為何 localStorage、sessionStorage 屬于html5的范疇,但是為何 IE8卻支持?
