日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php having,having方法

發布時間:2023/12/1 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php having,having方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

having方法

1、對分組統計的結果,進行篩選如果將分分組查詢的結果看成一張表的話,having方法類似where語句的功能

2、源碼:/thinkphp/library/think/db/Query.php/**

*?指定having查詢

*?@access?public

*?@param?string?$having?having

*?@return?$this

*/

public?function?having($having)

{

$this->options['having']?=?$having;

return?$this;

}源碼非常簡單,就是給Query類的查詢選項屬性options[ 'having' ] 賦值

3、參數與返回值參數如果把分組查詢結果看作一張新數據表的話,having就相當于該表的where操作。同理,這個“新表”中應該只有分組字段和統計字段(由聚合函數計算得到的值組成的字段)。我們having方法,就是在統計字段中,找出符合條件的記錄:如平均值大于500之類的條件。序號參數說明1聚合函數組成的運算表達式從統計查詢結果是,篩選出符合條件的記錄having方法與where方法都可以設置查詢條件,但二者使用是有區別的:

(1) where方法中的字段,必須是表中實際真實存在的字段

(2) having方法中的定段,不一定是表中實際字段,只要是select語句可以查詢或計算出來的表達式都可以,例如拼接字段名、數值型字段的算術運算、統計類聚合函數等;換句話說,having 中的字段,必須在select后面的字段列表中出現。返回值:與其它方法一樣,返回查詢對象本身,便于后面訪問調用

4、實例演示

任務1:查詢tp5_staff表中,各部門的平均工資大于6400元的員工信息

該實例是前面group方法的加強版,加了一個限定條件而已,請對照著看

Index.php 控制器中代碼如下:

namespace?app\index\controller;

//導入數據庫類

use?think\Db;

class?Index?{

public?function?index(){

//查詢部門的平均工資,小數保留2位

$result?=?Db::table('tp5_staff')

//字段名稱中,可以使用聚合統計函數

->?field(['dept'=>'部門','ROUND(AVG(salary),2)'=>'平均工資'])

->?group('dept')

->?having('avg(salary)?>?6400')

->?select();

//查看結果

dump($result);

}查詢結果如下:array(2)?{

[0]?=>?array(2)?{

["部門"]?=>?string(9)?"市場部"

["平均工資"]?=>?float(9431.33)

}

[1]?=>?array(2)?{

["部門"]?=>?string(9)?"開發部"

["平均工資"]?=>?float(6456.43)

}

}可以看到,原來的市場部平均工資數據消失了,因為他的平均工資不到6400生成的SQL語句如下:SELECT?`dept`?AS?`部門`,ROUND(AVG(salary),2)?AS?`平均工資`?FROM?`tp5_staff`?GROUP?BY?dept?HAVING?avg(salary)?>?6400表中數據如下:

總結:having條件與where條件非常相似,但又有本質不同。where是根據某列特征進行查詢,而having是在查詢已經產生的結果集中進行篩選。這二個方法執行的對象和時機是不同的,請注意區別。

總結

以上是生活随笔為你收集整理的php having,having方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。