mysql 帶多個(gè)條件的查詢
環(huán)境:mysql 5.7
當(dāng)一個(gè)where語句中同時(shí)出現(xiàn)多個(gè)and 或者or時(shí),需要將多個(gè)OR用小括號(hào)括起來再和AND進(jìn)行“與”,或者將多個(gè)AND用小括號(hào)括起來再與OR進(jìn)行“或”
mysql 多對(duì)多條件查詢
兩個(gè)表 user和role 中間表是user_role
![](/d/20211017/012cac3174c072b529feafccb54f926c.gif)
查詢用戶和角色的對(duì)應(yīng)關(guān)系
select res.user_name,r.role_name from(select u.user_name,ur.role_id from user as u INNER JOIN user_role as ur where u.user_id=ur.user_id) as res
INNER JOIN role as r where res.role_id=r.role_id;
mysql 查詢同一字段中同時(shí)滿足多個(gè)條件
![](/d/20211017/6b754e955d41f86fd652d7b6ff9f9fd6.gif)
![](/d/20211017/6b754e955d41f86fd652d7b6ff9f9fd6.gif)
分析:
1,先查詢出01號(hào)同學(xué)學(xué)習(xí)的課程
SELECT C FROM sc WHERE S='01'
![](/d/20211017/c4b07b9df475ee767469ddd960bc61f9.gif)
2,查詢學(xué)習(xí)該相關(guān)課程的同學(xué)編號(hào)
SELECT S FROM sc WHERE C in
(SELECT C FROM sc WHERE S='01')
![](/d/20211017/ef6b34c1686e433e433a5e075957f4a5.gif)
可以看到,我們分別查詢了3次,所以出現(xiàn)多個(gè)結(jié)果,因?yàn)槭莖r關(guān)系,所以每個(gè)選擇了1、2、3課程的同學(xué)都全部取出,
3,現(xiàn)在需要將出現(xiàn)次數(shù)為3的編號(hào)取出
SELECT S FROM sc WHERE C in
(SELECT C FROM sc WHERE S='01')
GROUP BY S HAVING COUNT(S) =3
![](/d/20211017/df1f7448ce3544e969fe2723bf84b426.gif)
看到編號(hào)為1、2、3、4的同學(xué)選了與01號(hào)同學(xué)一致的課程
4,與student表進(jìn)行連表查詢,取出相關(guān)信息
SELECT a.* FROM
student a LEFT JOIN sc b
ON a.S = b.S WHERE b.S in (
SELECT S FROM sc WHERE C in
(SELECT C FROM sc WHERE S='01')
GROUP BY S HAVING COUNT(S) =3)
GROUP BY a.S
![](/d/20211017/eae6aa8b58d85b0ea38acef060bdc9e9.gif)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- mysql查詢條件not in 和 in的區(qū)別及原因說明
- MySQL全面瓦解之查詢的過濾條件詳解
- mysql條件查詢and or使用方法及優(yōu)先級(jí)實(shí)例分析
- 詳解Mysql查詢條件中字符串尾部有空格也能匹配上的問題
- MySQL查詢條件常見用法詳解
- MySQL查詢條件中in會(huì)用到索引嗎