很多初用mysql的朋友可能搞不清楚在mysql中where與having的區(qū)別在哪里,下面我來簡(jiǎn)單的舉幾個(gè)實(shí)例來介紹where與having的區(qū)別吧.
讓我們先運(yùn)行2個(gè)sql語句,代碼如下:
- SELECT * FROM `welcome` HAVING id >1 LIMIT 0 , 30
- SELECT * FROM `welcome` WHERE id >1 LIMIT 0 , 30
查看一下結(jié)果吧,怎么樣?是不是查詢到相同的結(jié)果,讓我們?cè)倏?個(gè)sql語句,代碼如下:
- SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary)>10;
- SELECT user, MAX(salary) FROM users GROUP BY user WHERE MAX(salary)>10;
怎么樣?看出差別了嗎,第一個(gè)sql語句可以正常運(yùn)行,舊版mysql可能會(huì)出錯(cuò),而第二個(gè)則會(huì)報(bào)錯(cuò).
如果你沒看出我們?cè)倏?
•WHERE子句是在第一步從表或視圖中配全SELECT子句把數(shù)據(jù)過濾性地查詢出來,代碼如下:
- select * from table_a where title1='a';
- select * from table_a where title1='a';
•HAVING子句是在SELECT子句與WHERE子句把查詢出來的結(jié)果存放到內(nèi)存中的二次過濾,代碼如下:
- 1.select * from table_a
- 2.where title1='a' --Vevb.com
- 3.having content2 like 'b%'
總結(jié):二者相似,卻也有不同,讓我們簡(jiǎn)單了解一下.
where和having的區(qū)別是where子句對(duì)一個(gè)表的所有記錄進(jìn)行操作,只搜索與指定條件相匹配的記錄.
而having子句只對(duì)經(jīng)過操作的表記錄進(jìn)行檢索,對(duì)結(jié)果集進(jìn)行更進(jìn)一步的篩選,通常,having子句和group by子句相連,而where子句和select,delete和update語句相連.
|
新聞熱點(diǎn)
疑難解答
圖片精選