婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > SQL Server 開窗函數(shù) Over()代替游標(biāo)的使用詳解

SQL Server 開窗函數(shù) Over()代替游標(biāo)的使用詳解

熱門標(biāo)簽:地圖標(biāo)注如何弄全套標(biāo) 電銷機(jī)器人 深圳 南京電銷外呼系統(tǒng)哪家好 在電子版地圖標(biāo)注要收費(fèi)嗎 武漢AI電銷機(jī)器人 萬利達(dá)綜合醫(yī)院地圖標(biāo)注點(diǎn) 股票配資電銷機(jī)器人 外呼系統(tǒng)會(huì)封嗎 實(shí)體店地圖標(biāo)注怎么標(biāo)

前言:

今天在優(yōu)化工作中遇到的sql慢的問題,發(fā)現(xiàn)以前用了挺多游標(biāo)來處理數(shù)據(jù),這樣就導(dǎo)致在數(shù)據(jù)量多的情況下,需要一行一行去遍歷從而計(jì)算需要的數(shù)據(jù),這樣處理的結(jié)果就是數(shù)據(jù)慢,容易卡死。

語法介紹:

1、與Row_Number() 函數(shù)結(jié)合使用,對(duì)結(jié)果進(jìn)行排序,這個(gè)是我們使用的非常多的

  

2、與聚合函數(shù)結(jié)合使用,利用over子句的分組和排序,對(duì)需要的數(shù)據(jù)進(jìn)行操作

例如:SUM() Over() 累加值、AVG() Over() 平均數(shù)
MAX() Over() 最大值、MIN() Over() 最小值

具體介紹:

下面模擬工作中通過開窗函數(shù)代替游標(biāo)的例子,通過期初余額與單據(jù)的預(yù)收金額、應(yīng)收金額、實(shí)收金額來計(jì)算截止本單的期末余額,在以往就是通過游標(biāo)一行一行去遍歷,計(jì)算需要的期末余額,現(xiàn)在使用SUM() Over()來代替,最終要實(shí)現(xiàn)的效果圖如下:

第一行表示標(biāo)題;第二行表示客戶,是一行空行;第三行是期初余額,只顯示期末余額的數(shù)據(jù),第四至第六行表示的是每種單據(jù)的余額情況,并逐步匯總當(dāng)前行的期末余額數(shù)據(jù);最后一行表示的是對(duì)客戶的合計(jì)。

1、構(gòu)建需要用到的表和數(shù)據(jù)(簡(jiǎn)略版)

--客戶表
CREATE TABLE Organization(
 FItemID  INT NOT NULL PRIMARY KEY IDENTITY(1,1),
 FNumber  NVARCHAR(255),
 FName  NVARCHAR(255)
)
 
--期初數(shù)據(jù)表
CREATE TABLE InitialData(
 FID   INT NOT NULL PRIMARY KEY IDENTITY(1,1),
 FCustId   INT NOT NULL,
 FPreAmount  DECIMAL(28,10) NOT NULL DEFAULT(0),  --預(yù)收金額
 FReceivableAmount DECIMAL(28,10) NOT NULL DEFAULT(0),  --應(yīng)收金額
 FReceiveAmount  DECIMAL(28,10) NOT NULL DEFAULT(0)  --實(shí)收金額
)
 
--單據(jù)明細(xì)表
CREATE TABLE DetailData(
 FID   INT NOT NULL PRIMARY KEY IDENTITY(1,1),
 FCustId   INT NOT NULL,
 FDate   DATETIME NOT NULL,
 FBillType  NVARCHAR(64) NOT NULL,
 FBillNo   NVARCHAR(64) NOT NULL,
 FPreAmount  DECIMAL(28,10) NOT NULL DEFAULT(0),  --預(yù)收金額
 FReceivableAmount DECIMAL(28,10) NOT NULL DEFAULT(0),  --應(yīng)收金額
 FReceiveAmount  DECIMAL(28,10) NOT NULL DEFAULT(0)  --實(shí)收金額
)
 
INSERT INTO Organization(FNumber,FName) VALUES('001','北京客戶')
INSERT INTO Organization(FNumber,FName) VALUES('002','上海客戶')
INSERT INTO Organization(FNumber,FName) VALUES('003','廣州客戶')
 
INSERT INTO InitialData(FCustId,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,0,0,0)
INSERT INTO InitialData(FCustId,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,8000,7245,0)
INSERT INTO InitialData(FCustId,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(3,0,1068.21,1068.00)
 
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,'2020-06-30','委托結(jié)算','XSD20200700008',0,1221.56,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,'2020-06-30','委托結(jié)算','XSD20200700009',0,373.46,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,'2020-06-30','委托結(jié)算退貨','XSD20200700010',0,-427.05,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(1,'2020-07-30','銷售商品返利','XSFL20200700005',0,-17.9,0)
 
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,'2020-06-25','預(yù)收退款','SKD20200700002',-755,0,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,'2020-06-20','銷售發(fā)貨','XSD20200700006',0,6169.50,6169.50)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,'2020-07-30','銷售總額返利','XSFL20200700002',0,-493.56,-421.85)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,'2020-07-31','其他應(yīng)收','QTYS20200900001',0,6000.00,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(2,'2020-06-20','預(yù)收沖應(yīng)收','HXD20200700006',-7245.00,0,7245.00)
 
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(3,'2020-06-30','銷售收款','SKD20200700003',0,0,2386.96)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(3,'2020-06-30','應(yīng)收轉(zhuǎn)應(yīng)收','HXD20200700007',0,2386.75,0)
INSERT INTO DetailData(FCustId,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount)
VALUES(3,'2020-07-08','銷售退貨','XSD20200700014',0,-46.80,0)
GO

2、以往的游標(biāo)寫法

SET NOCOUNT ON
--建立臨時(shí)表處理獲取數(shù)據(jù)
CREATE TABLE #DATA(
 FID   INT NOT NULL PRIMARY KEY IDENTITY(1,1),
 FClassTypeId  INT NOT NULL,
 FCustId   INT NOT NULL,
 FNumber   NVARCHAR(255),
 FName   NVARCHAR(255),
 FDate   DATETIME NULL,
 FBillType  NVARCHAR(64) NULL,
 FBillNo   NVARCHAR(64) NULL,
 FPreAmount  DECIMAL(28,10) NOT NULL DEFAULT(0),  --預(yù)收金額
 FReceivableAmount DECIMAL(28,10) NOT NULL DEFAULT(0),  --應(yīng)收金額
 FReceiveAmount  DECIMAL(28,10) NOT NULL DEFAULT(0),  --實(shí)收金額
 FBalanceAmount  DECIMAL(28,10) NOT NULL DEFAULT(0)    --期末余額
)
 
Declare @Id     INT
Declare @CustId    INT
Declare @PreAmount   decimal(28,10)
Declare @ReceivableAmount decimal(28,10)
Declare @ReceiveAmount  decimal(28,10)
Declare @OldCustId   int
Declare @Count    int
Declare @LastAmount   decimal(28,10)
Declare @SumPreAmount  decimal(28,10)
Declare @SumReceivableAmount decimal(28,10)
Declare @SumReceiveAmount decimal(28,10)
Declare @SumBalanceAmount decimal(28,10)
 
--使用游標(biāo)
Declare Data_cursor Cursor
For Select FID,FCustId,FPreAmount,FReceivableAmount,FReceiveAmount
 From DetailData
 Order By FCustId,FDate,FID
OPEN Data_cursor
FETCH NEXT FROM Data_Cursor INTO @Id,@CustId,@PreAmount,@ReceivableAmount,@ReceiveAmount
SET @OldCustId = @CustId
SET @Count = 0
SET @LastAmount = 0
SET @SumPreAmount = 0
SET @SumReceivableAmount = 0
SET @SumReceiveAmount = 0
SET @SumBalanceAmount = 0
WHILE @@FETCH_STATUS = 0
BEGIN 
 IF @Count > 0
 BEGIN
  IF @OldCustId > @CustId 
  BEGIN
   --表示客戶已經(jīng)變了,要插入小計(jì)
   SET @Count = 0
   INSERT INTO #DATA(FClassTypeId,FBillType,FCustId,FNumber,FName,FPreAmount,FReceivableAmount,FReceiveAmount,FBalanceAmount)
   SELECT -9999,FName + '小計(jì)',FItemID,FNumber,FName,@SumPreAmount,@SumReceivableAmount,@SumReceiveAmount,@LastAmount
   FROM Organization
   WHERE FItemID = @OldCustId
   Select @SumPreAmount=0,@SumReceivableAmount=0,@SumReceiveAmount=0,@SumBalanceAmount=0,@LastAmount=0
  END  
 END 
 IF @Count = 0
 BEGIN
  Set @OldCustId=@CustId
  --插入一行空行
  INSERT INTO #DATA(FClassTypeId,FBillType,FCustId,FNumber,FName)
  SELECT -1000,FName,FItemID,FNumber,FName
  FROM Organization
  WHERE FItemID = @CustId
 
  --獲取期初的期末余額
  SELECT @LastAmount=isnull(FReceivableAmount,0) - isnull(FPreAmount,0) - isnull(FReceiveAmount,0),@PreAmount=isnull(FPreAmount,0),@ReceivableAmount=isnull(FReceivableAmount,0),@ReceiveAmount=isnull(FReceiveAmount,0)
  FROM InitialData
  WHERE FCustId = @CustId
 
  INSERT INTO #DATA(FClassTypeId,FBillType,FCustId,FNumber,FName,FBalanceAmount)
  VALUES(-1000,'期初余額',@CustId,'','',@LastAmount)
 
  SELECT @Count = 1
  SELECT @SumBalanceAmount = @LastAmount
 END 
 
 --插入單據(jù)明細(xì)
 INSERT INTO #DATA(FClassTypeId,FCustId,FNumber,FName,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount,FBalanceAmount)
 SELECT 0,d.FCustId,o.FNumber,o.FName,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount,@LastAmount + FReceivableAmount - FPreAmount - FReceiveAmount
 FROM DetailData d
 INNER JOIN Organization o ON d.FCustId = o.FItemID
 WHERE d.FCustId = @CustId AND FID = @Id
 
 SELECT
 @LastAmount = @LastAmount + FReceivableAmount - FPreAmount - FReceiveAmount,
 @SumPreAmount=@SumPreAmount + FPreAmount,@SumReceivableAmount=@SumReceivableAmount + FReceivableAmount,
 @SumReceiveAmount=@SumReceiveAmount + FReceiveAmount
 FROM DetailData
 WHERE FCustId = @CustId AND FID = @Id
 
 FETCH NEXT FROM Data_cursor INTO @Id,@CustId,@PreAmount,@ReceivableAmount,@ReceiveAmount
END
IF @Count > 0
BEGIN
 INSERT INTO #DATA(FClassTypeId,FBillType,FCustId,FNumber,FName,FPreAmount,FReceivableAmount,FReceiveAmount,FBalanceAmount)
 SELECT -9999,FName + '小計(jì)',FItemID,FNumber,FName,@SumPreAmount,@SumReceivableAmount,@SumReceiveAmount,@LastAmount
 FROM Organization
 WHERE FItemID = @OldCustId
 Select @SumPreAmount=0,@SumReceivableAmount=0,@SumReceiveAmount=0,@SumBalanceAmount=0,@LastAmount=0
END
CLOSE Data_cursor
DEALLOCATE Data_cursor
 
SELECT * FROM #DATA
ORDER BY FCustId,FID
 
DROP TABLE #DATA

代碼說明:創(chuàng)建了一個(gè)臨時(shí)表,使用游標(biāo)遍歷我們的DetailData數(shù)據(jù)表,為了呈現(xiàn)我們最終需要的數(shù)據(jù)樣式,插入客戶空行、期初余額、單據(jù)信息、客戶小計(jì)等,逐行計(jì)算期末余額值的情況,最終效果如下:

3、使用SUM() Over()的寫法

SET NOCOUNT ON
--建立臨時(shí)表處理獲取數(shù)據(jù)
CREATE TABLE #DATA(
 FID     INT NOT NULL PRIMARY KEY IDENTITY(1,1),
 FClassTypeId  INT NOT NULL,
 FCustId    INT NOT NULL,
 FNumber    NVARCHAR(255),
 FName    NVARCHAR(255),
 FDate    DATETIME NULL,
 FBillType   NVARCHAR(64) NULL,
 FBillNo    NVARCHAR(64) NULL,
 FPreAmount   DECIMAL(28,10) NOT NULL DEFAULT(0),  --預(yù)收金額
 FReceivableAmount DECIMAL(28,10) NOT NULL DEFAULT(0),  --應(yīng)收金額
 FReceiveAmount  DECIMAL(28,10) NOT NULL DEFAULT(0),  --實(shí)收金額
 FBalanceAmount  DECIMAL(28,10) NOT NULL DEFAULT(0)  --期末余額
)
 
--插入空行
INSERT INTO #DATA(FClassTypeId,FBillType,FCustId,FNumber,FName)
SELECT -1000,FName,FItemID,FNumber,FName
FROM Organization o
INNER JOIN (SELECT FCustId FROM DetailData GROUP BY FCustId) d ON d.FCustId = o.FItemID
 
--插入期初余額
INSERT INTO #DATA(FClassTypeId,FBillType,FCustId,FNumber,FName,FBalanceAmount)
SELECT -1000,'期初余額',FItemID,'','',i.FReceivableAmount - i.FPreAmount -i.FReceiveAmount
FROM Organization o
INNER JOIN InitialData i ON o.FItemID = i.FCustId
INNER JOIN (SELECT FCustId FROM DetailData GROUP BY FCustId) d ON d.FCustId = o.FItemID
 
--插入單據(jù)明細(xì)(關(guān)鍵代碼SUM() Over() )
INSERT INTO #DATA(FClassTypeId,FCustId,FNumber,FName,FDate,FBillType,FBillNo,FPreAmount,FReceivableAmount,FReceiveAmount,FBalanceAmount)
SELECT 0,d.FCustId,o.FNumber,o.FName,d.FDate,d.FBillType,d.FBillNo,d.FPreAmount,d.FReceivableAmount,d.FReceiveAmount,
SUM(d.FReceivableAmount - d.FPreAmount - d.FReceiveAmount) OVER(PARTITION BY d.FCustId ORDER BY d.FCustId,d.FDate,d.FID)
+ i.FReceivableAmount - i.FPreAmount - i.FReceiveAmount
FROM DetailData d WITH(NOLOCK)
INNER JOIN Organization o WITH(NOLOCK) ON o.FItemID = d.FCustId
INNER JOIN InitialData i WITH(NOLOCK) ON o.FItemID = i.FCustId
ORDER BY d.FCustId,d.FDate,d.FID
 
--插入小計(jì)
INSERT INTO #DATA(FClassTypeId,FBillType,FCustId,FNumber,FName,FPreAmount,FReceivableAmount,FReceiveAmount,FBalanceAmount)
SELECT -9999,FName + '小計(jì)',d.FCustId,FNumber,FName,SUM(FPreAmount),SUM(FReceivableAmount),SUM(FReceiveAmount),0
FROM dbo.DetailData d
INNER JOIN dbo.Organization o ON d.FCustId = o.FItemID
GROUP BY d.FCustId,o.FName,o.FNumber
 
--更新小計(jì)的期末余額
UPDATE d SET d.FBalanceAmount = d.FReceivableAmount - d.FPreAmount - d.FReceiveAmount + i.FReceivableAmount - i.FPreAmount - i.FReceiveAmount
FROM #DATA d
INNER JOIN InitialData i ON d.FCustId = i.FCustId
WHERE d.FClassTypeId = -9999
 
SELECT * FROM #DATA
ORDER BY FCustId,FID
 
DROP TABLE #DATA

代碼說明:相比第二種,去除了游標(biāo)的寫法,通過了

SUM(d.FReceivableAmount - d.FPreAmount - d.FReceiveAmount) OVER(PARTITION BY d.FCustId ORDER BY d.FCustId,d.FDate,d.FID)

來計(jì)算我們需要的值,這個(gè)語法說明一下,sum是累加計(jì)算,計(jì)算應(yīng)收金額 - 預(yù)收金額 - 實(shí)收金額(第二行計(jì)算出來的結(jié)果要加上第一行計(jì)算出來的結(jié)果,第三行計(jì)算出來的結(jié)果要加上第二行計(jì)算出來的結(jié)果,依次類推,所以,其他聚合函數(shù)也是這種用法哦),PARTITION BY分組統(tǒng)計(jì)客戶,并通過Order by指定排序
這個(gè)PARTITION BY和Order By結(jié)果的用法就很關(guān)鍵了,不然計(jì)算就不是預(yù)期想要的
再舉個(gè)例子:比如使用Count() Over() 計(jì)算客戶的訂單號(hào)

SELECT DISTINCT FCustId,COUNT(FBillNo) OVER(PARTITION BY FCustId) FBillNum FROM DetailData

總結(jié):

1、游標(biāo)的使用場(chǎng)景可以很廣,但是在數(shù)據(jù)量大的時(shí)候,就會(huì)顯得很慢,一行一行遍歷的速度還是挺久的

2、使用開窗函數(shù)來實(shí)現(xiàn)一些功能,還是很方便能實(shí)現(xiàn)效果,并且它的速度也是很快,值得推薦。

到此這篇關(guān)于SQL Server 開窗函數(shù) Over()代替游標(biāo)的使用的文章就介紹到這了,更多相關(guān)SQL Server 開窗函數(shù) Over()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • SQL server 自增ID--序號(hào)自動(dòng)增加的字段操作
  • SQL Server中identity(自增)的用法詳解
  • SqlServer生成連續(xù)數(shù)字根據(jù)指定的數(shù)字操作
  • SQL Server中row_number函數(shù)的常見用法示例詳解
  • SQL Server如何通過創(chuàng)建臨時(shí)表遍歷更新數(shù)據(jù)詳解
  • 解決sql server保存對(duì)象字符串轉(zhuǎn)換成uniqueidentifier失敗的問題

標(biāo)簽:安徽 濟(jì)寧 汕頭 武威 廣東 臺(tái)州 濟(jì)源 泰安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server 開窗函數(shù) Over()代替游標(biāo)的使用詳解》,本文關(guān)鍵詞  SQL,Server,開窗,函數(shù),Over,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server 開窗函數(shù) Over()代替游標(biāo)的使用詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQL Server 開窗函數(shù) Over()代替游標(biāo)的使用詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日本欧洲一区二区| 欧美日韩一区小说| 91美女精品福利| 欧美国产日产图区| 亚洲一区二区偷拍精品| 福利一区二区在线观看| 欧美喷水一区二区| 国产精品久久久久久久久图文区 | 欧美色中文字幕| 欧美国产激情一区二区三区蜜月| 欧美色老头old∨ideo| 国产成人av资源| 国产精品不卡视频| 午夜精品一区二区三区三上悠亚| 欧洲精品在线观看| 日韩电影在线看| 懂色av一区二区夜夜嗨| 欧美性猛交xxxxxxxx| 欧美一区二区免费| 成人午夜私人影院| 欧美一区二区三区在线电影| 精品日韩一区二区三区 | 日韩欧美国产精品一区| 91丨九色丨黑人外教| 欧美老女人第四色| 99久久精品国产毛片| 欧美日韩国产经典色站一区二区三区| 国产精品一区二区黑丝| 精品黑人一区二区三区久久 | 精品欧美一区二区在线观看| 国产精品全国免费观看高清 | 日韩精品一区二区三区在线播放 | 亚洲精品乱码久久久久久久久| 青椒成人免费视频| 亚洲天堂中文字幕| 日韩欧美久久久| 国产精品久久久久一区二区三区 | 国产一区二区三区黄视频| 亚洲国产人成综合网站| 99re成人精品视频| www.66久久| 久久精品国产澳门| 国产精品一区一区| 精品国产欧美一区二区| 久久精品999| 精品国产一区二区精华| 国产一区中文字幕| 亚洲国产精品久久久久秋霞影院 | 99视频在线观看一区三区| 欧美图区在线视频| 一区二区三区中文免费| 国产女主播在线一区二区| 日韩精品在线网站| 亚洲成年人影院| 天堂久久久久va久久久久| 亚洲欧美日韩在线不卡| 欧美一区二区三区四区高清| 亚洲欧美精品午睡沙发| 欧美系列日韩一区| 日韩高清不卡在线| 日韩欧美高清一区| 99久久99久久久精品齐齐| 久久久精品一品道一区| 亚洲日本va午夜在线影院| 在线亚洲一区二区| 欧美一级xxx| 中文字幕制服丝袜成人av | 色综合久久久网| 在线看国产一区二区| 一区在线中文字幕| 中文字幕欧美日本乱码一线二线 | 中文字幕日本不卡| 欧美性猛交xxxx乱大交退制版| 午夜激情久久久| 国产午夜精品福利| 91麻豆精品国产| 久久亚洲精品小早川怜子| 伊人婷婷欧美激情| 一区二区三区影院| 欧美午夜影院一区| av成人免费在线| 国产精品资源在线看| 亚洲成人黄色影院| 国产精品久久久久久福利一牛影视| 在线精品视频一区二区三四| 成人的网站免费观看| 日韩欧美在线123| 欧美日韩一区二区在线视频| www..com久久爱| 成人免费黄色大片| 亚洲福利一区二区| 久久99久久99| 久久久777精品电影网影网| 日韩精品中文字幕一区| 麻豆91精品视频| 精品国产乱码久久久久久蜜臀 | 成人夜色视频网站在线观看| 久久国产福利国产秒拍| 亚洲成人一区二区在线观看| 依依成人综合视频| 蜜桃视频免费观看一区| 国产精品99久久久久久有的能看| 国产精品一二一区| 91同城在线观看| 欧美色视频一区| 久久蜜桃av一区二区天堂| 欧美国产综合一区二区| 亚洲黄网站在线观看| 欧美久久久久久久久| 欧美中文字幕一区二区三区 | 26uuu久久天堂性欧美| 亚洲一二三专区| 欧美一区二区三区在线| 国产精品夜夜爽| 北条麻妃国产九九精品视频| 久久欧美一区二区| 69堂亚洲精品首页| 欧美精品乱码久久久久久 | 欧美精品国产精品| 国产精品每日更新| 日韩av网站在线观看| 国产欧美久久久精品影院| 国产精品久久久久一区二区三区| 欧美成人乱码一区二区三区| 日韩欧美国产午夜精品| 亚洲精品少妇30p| 中文字幕亚洲欧美在线不卡| 日日夜夜精品视频天天综合网| 日本韩国视频一区二区| 欧美精品一卡二卡| 亚洲第一福利视频在线| 蜜臀av国产精品久久久久| 亚洲mv大片欧洲mv大片精品| 成人网在线免费视频| 国产亚洲精品aa午夜观看| 五月天亚洲婷婷| 国产在线精品国自产拍免费| 欧美中文字幕一区| 香蕉影视欧美成人| 欧美精品一卡两卡| 日韩电影在线观看一区| 久久久91精品国产一区二区精品| 天堂一区二区在线| 制服丝袜亚洲播放| 青青草国产精品亚洲专区无| 欧美日韩精品福利| 国产在线播放一区| 中文字幕佐山爱一区二区免费| 日韩一级完整毛片| 日本精品裸体写真集在线观看 | 精品国产成人系列| 91免费版在线| 五月婷婷综合激情| 久久久久久久久久久久久女国产乱 | 精品国产乱子伦一区| 99精品热视频| 久久精品99久久久| 一区二区视频在线看| 亚洲激情自拍偷拍| 91精品国产高清一区二区三区| 国产成人精品免费网站| 亚洲蜜桃精久久久久久久| 国产精品毛片久久久久久久| 久久久久久久久久电影| 久久精品免费在线观看| 欧美日韩国产一级片| 一本久道久久综合中文字幕| 成人在线视频一区二区| 成人免费av在线| 成人爽a毛片一区二区免费| 日韩电影一区二区三区| ...av二区三区久久精品| 国产蜜臀97一区二区三区| 精品国产凹凸成av人导航| 久久久亚洲精品一区二区三区| 欧美激情中文字幕| 国产精品美女久久久久久久久久久 | 奇米在线7777在线精品| 偷拍亚洲欧洲综合| 亚洲国产视频一区| 亚洲福利一二三区| 国产一区二区0| 欧美军同video69gay| 久久精品人人做人人综合 | 裸体一区二区三区| 91亚洲大成网污www| 成人免费福利片| 91亚洲永久精品| 欧美成人a∨高清免费观看| 自拍av一区二区三区| 亚洲美女少妇撒尿| 日韩中文字幕av电影| 亚洲v中文字幕| 天堂一区二区在线| 国产成人午夜99999| 日韩一级高清毛片| 无吗不卡中文字幕| 狠狠狠色丁香婷婷综合激情| 国产91精品精华液一区二区三区| 337p亚洲精品色噜噜狠狠|