第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

選擇滿足不同行的不同條件的值?

選擇滿足不同行的不同條件的值?

浮云間 2019-07-17 15:45:58
選擇滿足不同行的不同條件的值?這是一個非常基本的查詢,我想不出.假設(shè)我有一個像這樣的兩列表:userid  |  roleid    1    |    1    1    |    2    1    |    3    2    |    1我想得到所有不同的用戶roleids使用上面的例子,我希望返回的唯一結(jié)果是userid1.我如何做到這一點(diǎn)?
查看完整描述

3 回答

?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個贊

SELECT userid

FROM UserRole

WHERE roleid IN (1, 2, 3)

GROUP BY userid

HAVING COUNT(DISTINCT roleid) = 3;

讀到這篇文章的人:我的答案簡單明了,并且獲得了“接受”的狀態(tài),但是請你去讀一下回答由@Cletus提供。它的性能要好得多。


在大聲思考時(shí),@Cletus描述的另一種書寫自我連接的方法是:


SELECT t1.userid

FROM userrole t1

JOIN userrole t2 ON t1.userid = t2.userid

JOIN userrole t3 ON t2.userid = t3.userid

WHERE (t1.roleid, t2.roleid, t3.roleid) = (1, 2, 3);

對于您來說,這可能更容易閱讀,MySQL支持對這樣的元組進(jìn)行比較。MySQL還知道如何為該查詢智能地使用覆蓋索引。只要把它做完就行了EXPLAIN請參閱所有三個表的注釋中的“使用索引”,這意味著它正在讀取索引,甚至不必觸摸數(shù)據(jù)行。


我在我的Macbook上使用MySQL5.1.48運(yùn)行了這個查詢超過210萬行(PostTags的Stack溢出七月數(shù)據(jù)轉(zhuǎn)儲),并在1.08秒內(nèi)返回了結(jié)果。在一個有足夠內(nèi)存分配給innodb_buffer_pool_size它應(yīng)該更快。


查看完整回答
反對 回復(fù) 2019-07-17
  • 3 回答
  • 0 關(guān)注
  • 556 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號