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

主頁 > 知識(shí)庫 > SQL開窗函數(shù)的具體實(shí)現(xiàn)詳解

SQL開窗函數(shù)的具體實(shí)現(xiàn)詳解

熱門標(biāo)簽:奧威地圖標(biāo)注多個(gè)地方 優(yōu)質(zhì)地圖標(biāo)注 智能語音外呼系統(tǒng)選哪家 千呼電銷機(jī)器人價(jià)格 怎樣在地圖上標(biāo)注路線圖標(biāo) 武漢長沙外呼系統(tǒng)方法和技巧 百度地圖標(biāo)注不同路線 京華物流公司地圖標(biāo)注 外呼系統(tǒng)電銷專用

開窗函數(shù):在開窗函數(shù)出現(xiàn)之前存在著很多用 SQL 語句很難解決的問題,很多都要通過復(fù)雜的相關(guān)子查詢或者存儲(chǔ)過程來完成。為了解決這些問題,在 2003 年 ISO SQL 標(biāo)準(zhǔn)加入了開窗函數(shù),開窗函數(shù)的使用使得這些經(jīng)典的難題可以被輕松的解決。目前在 MSSQLServer、Oracle、DB2 等主流數(shù)據(jù)庫中都提供了對(duì)開窗函數(shù)的支持,不過非常遺憾的是 MYSQL 暫時(shí)還未對(duì)開窗函數(shù)給予支持。

開窗函數(shù)簡介:與聚合函數(shù)一樣,開窗函數(shù)也是對(duì)行集組進(jìn)行聚合計(jì)算,但是它不像普通聚合函數(shù)那樣每組只返回一個(gè)值,開窗函數(shù)可以為每組返回多個(gè)值,因?yàn)殚_窗函數(shù)所執(zhí)行聚合計(jì)

算的行集組是窗口。在 ISO SQL 規(guī)定了這樣的函數(shù)為開窗函數(shù),在 Oracle 中則被稱為分析函數(shù)。

數(shù)據(jù)表(Oracle):T_Person 表保存了人員信息,F(xiàn)Name 字段為人員姓名,F(xiàn)City 字段為人員所在的城市名,F(xiàn)Age 字段為人員年齡,F(xiàn)Salary 字段為人員工資

CREATE TABLE T_Person (FName VARCHAR2(20),FCity VARCHAR2(20),FAge INT,FSalary INT)

向 T_Person 表中插入一些演示數(shù)據(jù):

INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Tom','BeiJing',20,3000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Tim','ChengDu',21,4000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Jim','BeiJing',22,3500);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Lily','London',21,2000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('John','NewYork',22,1000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('YaoMing','BeiJing',20,3000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Swing','London',22,2000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Guo','NewYork',20,2800);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('YuQian','BeiJing',24,8000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Ketty','London',25,8500);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Kitty','ChengDu',25,3000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Merry','BeiJing',23,3500);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Smith','ChengDu',30,3000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Bill','BeiJing',25,2000);
INSERT INTO T_Person(FName,FCity,FAge,FSalary)
VALUES('Jerry','NewYork',24,3300);
select * from t_person:

要計(jì)算所有人員的總數(shù),我們可以執(zhí)行下面的 SQL 語句:SELECT COUNT(*) FROM T_Person

除了這種較簡單的使用方式,有時(shí)需要從不在聚合函數(shù)中的行中訪問這些聚合計(jì)算的值。比如我們想查詢每個(gè)工資小于 5000 元的員工信息(城市以及年齡),并且在每行中都顯示所有工資小于 5000 元的員工個(gè)數(shù):

select fname,
  fcity,
  fsalary,
  (select count(*) from t_person where fsalary  5000) 工資少于5000員工總數(shù)
 from t_person
 where fsalary  5000

雖然使用子查詢能夠解決這個(gè)問題,但是子查詢的使用非常麻煩,使用開窗函數(shù)則可以大大簡化實(shí)現(xiàn),下面的 SQL 語句展示了如果使用開窗函數(shù)來實(shí)現(xiàn)同樣的效果:

select fname, fcity, fsalary, count(*) over() 工資小于5000員工數(shù)
 from t_person
 where fsalary  5000

可以看到與聚合函數(shù)不同的是,開窗函數(shù)在聚合函數(shù)后增加了一個(gè) OVER 關(guān)鍵字。

開窗函數(shù)格式: 函數(shù)名(列) OVER(選項(xiàng))

OVER 關(guān)鍵字表示把函數(shù)當(dāng)成開窗函數(shù)而不是聚合函數(shù)。SQL 標(biāo)準(zhǔn)允許將所有聚合函數(shù)用做開窗函數(shù),使用 OVER 關(guān)鍵字來區(qū)分這兩種用法。

在上邊的例子中,開窗函數(shù) COUNT(*) OVER()對(duì)于查詢結(jié)果的每一行都返回所有符合條件的行的條數(shù)。OVER 關(guān)鍵字后的括號(hào)中還經(jīng)常添加選項(xiàng)用以改變進(jìn)行聚合運(yùn)算的窗口范圍。如果 OVER 關(guān)鍵字后的括號(hào)中的選項(xiàng)為空,則開窗函數(shù)會(huì)對(duì)結(jié)果集中的所有行進(jìn)行聚合運(yùn)算。

PARTITION BY 子句:

開窗函數(shù)的 OVER 關(guān)鍵字后括號(hào)中的可以使用 PARTITION BY 子句來定義行的分區(qū)來供進(jìn)行聚合計(jì)算。與 GROUP BY 子句不同,PARTITION BY 子句創(chuàng)建的分區(qū)是獨(dú)
立于結(jié)果集的,創(chuàng)建的分區(qū)只是供進(jìn)行聚合計(jì)算的,而且不同的開窗函數(shù)所創(chuàng)建的分區(qū)也不互相影響。下面的 SQL 語句用于顯示每一個(gè)人員的信息以及所屬城市的人員數(shù):

select fname,fcity,fage,fsalary,count(*) over(partition by fcity) 所在城市人數(shù) from t_person

COUNT(*) OVER(PARTITION BY FCITY)表示對(duì)結(jié)果集按照FCITY進(jìn)行分區(qū),并且計(jì)算當(dāng)前行所屬的組的聚合計(jì)算結(jié)果。比如對(duì)于FName等于 Tom的行,它所屬的城市是BeiJing,同
屬于BeiJing的人員一共有6個(gè),所以對(duì)于這一列的顯示結(jié)果為6。

這就不需要先對(duì)fcity分組求和,然后再和t_person表連接查詢了,省事兒。

在同一個(gè)SELECT語句中可以同時(shí)使用多個(gè)開窗函數(shù),而且這些開窗函數(shù)并不會(huì)相互干
擾。比如下面的SQL語句用于顯示每一個(gè)人員的信息、所屬城市的人員數(shù)以及同齡人的人數(shù):

--顯示每一個(gè)人員的信息、所屬城市的人員數(shù)以及同齡人的人數(shù):
select fname,
  fcity,
  fage,
  fsalary,
  count(*) over(partition by fcity) 所屬城市的人個(gè)數(shù),
  count(*) over(partition by fage) 同齡人個(gè)數(shù)
 from t_person

ORDER BY子句:

開窗函數(shù)中可以在OVER關(guān)鍵字后的選項(xiàng)中使用ORDER BY子句來指定排序規(guī)則,而且有的開窗函數(shù)還要求必須指定排序規(guī)則。使用ORDER BY子句可以對(duì)結(jié)果集按
照指定的排序規(guī)則進(jìn)行排序,并且在一個(gè)指定的范圍內(nèi)進(jìn)行聚合運(yùn)算。ORDER BY子句的語法為:

ORDER BY 字段名 RANGE|ROWS BETWEEN 邊界規(guī)則1 AND 邊界規(guī)則2

RANGE表示按照值的范圍進(jìn)行范圍的定義,而ROWS表示按照行的范圍進(jìn)行范圍的定義;邊界規(guī)則的可取值見下表:

“RANGE|ROWS BETWEEN 邊界規(guī)則1 AND 邊界規(guī)則2”部分用來定位聚合計(jì)算范圍,這個(gè)子句又被稱為定位框架。

例子程序一:查詢從第一行到當(dāng)前行的工資總和:

select fname,
  fcity,
  fage,
  fsalary,
  sum(fsalary) over(order by fsalary rows between unbounded preceding and current row) 到當(dāng)前行工資求和
 from t_person

這里的開窗函數(shù)“SUM(FSalary) OVER(ORDER BY FSalary ROWS BETWEEN
UNBOUNDED PRECEDING AND CURRENT ROW)”
表示按照FSalary進(jìn)行排序,然后計(jì)算從第
一行(UNBOUNDED PRECEDING)到當(dāng)前行(CURRENT ROW)的和,這樣的計(jì)算結(jié)果就是按照
工資進(jìn)行排序的工資值的累積和。

RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW”是開窗函數(shù)中最常使用的定位框架,為了簡化使用,如果使用的是這種定位框架,則可以省略定位框架聲明部分,
也就是說上邊的sql可以簡化成:

select fname,
  fcity,
  fage,
  fsalary,
  sum(fsalary) over(order by fsalary) 到當(dāng)前行工資求和
 from t_person

例子程序二:把例子程序一的row換成了range,是按照范圍進(jìn)行定位的

select fname,
  fcity,
  fage,
  fsalary,
  sum(fsalary) over(order by fsalary range between unbounded preceding and current row) 到當(dāng)前行工資求和
 from t_person

區(qū)別:

這個(gè)SQL語句與例1中的SQL語句唯一不同的就是“ROWS”被替換成了“RANGE”。“ROWS”是按照行數(shù)進(jìn)行范圍定位的,而“RANGE”則是按照值范圍進(jìn)行定位的,這兩個(gè)不同的定位方式主要用來處理并列排序的情況。比如 Lily、Swing、Bill這三個(gè)人的工資都是2000元,如果按照“ROWS”進(jìn)行范圍定位,則計(jì)算從第一條到當(dāng)前行的累積和,而如果 如果按照 “RANGE”進(jìn)行范圍定位,則仍然計(jì)算從第一條到當(dāng)前行的累積和,不過由于等于2000元的工資有三個(gè)人,所以計(jì)算的累積和為從第一條到2000元工資的人員結(jié),所以對(duì) Lily、Swing、Bill這三個(gè)人進(jìn)行開窗函數(shù)聚合計(jì)算的時(shí)候得到的都是7000( “ 1000+2000+2000+2000 ”)。

下邊這的估計(jì)不常用:

例子程序三:

SELECT FName,
  FSalary,
  SUM(FSalary) OVER(ORDER BY FSalary ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING) 前二后二和
 FROM T_Person;

這里的開窗函數(shù)“SUM(FSalary) OVER(ORDER BY FSalary ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING)”表示按照FSalary進(jìn)行排序,然后計(jì)算從當(dāng)前行前兩行(2PRECEDING)到當(dāng)前行后兩行(2 FOLLOWING)的工資和,注意對(duì)于第一條和第二條而言它們的“前兩行”是不存在或者不完整的,因此計(jì)算的時(shí)候也是要按照前兩行是不存在或者不完整進(jìn)行計(jì)算,同樣對(duì)于最后兩行數(shù)據(jù)而言它們的“后兩行”也不存在或者不完整的,同樣要進(jìn)行類似的處理。

例子程序四:

SELECT FName, FSalary,
SUM(FSalary) OVER(ORDER BY FSalary ROWS BETWEEN 1 FOLLOWING AND 3 FOLLOWING) 后面一到三之和
FROM T_Person;

這里的開窗函數(shù)“SUM(FSalary) OVER(ORDER BY FSalary ROWS BETWEEN 1 FOLLOWING AND 3 FOLLOWING)”表示按照FSalary進(jìn)行排序,然后計(jì)算從當(dāng)前行后一行(1 FOLLOWING)到后三行(3 FOLLOWING)的工資和。注意最后一行沒有后續(xù)行,其計(jì)算結(jié)果為空值NULL而非0。

例子程序五:算工資排名

SELECT FName, FSalary,
COUNT(*) OVER(ORDER BY FSalary ROWS BETWEEN UNBOUNDED PRECEDING AND
CURRENT ROW)
FROM T_Person;

這里的開窗函數(shù)“COUNT(*) OVER(ORDER BY FSalary RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)”表示按照FSalary進(jìn)行排序,然后計(jì)算從第一行(UNBOUNDED PRECEDING)到當(dāng)前行(CURRENT ROW)的人員的個(gè)數(shù),這個(gè)可以看作是計(jì)算人員的工資水平排名。

不再用ROWNUM 了 省事了。這個(gè)over簡寫就會(huì)出錯(cuò)。

例子程序6:結(jié)合max求到目前行的最大值

SELECT FName, FSalary,FAge,
MAX(FSalary) OVER(ORDER BY FAge) 此行之前最大值
FROM T_Person;

這里的開窗函數(shù)“MAX(FSalary) OVER(ORDER BY FAge)”是“MAX(FSalary) OVER(ORDER BY FAge RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)”的簡化寫法,它表示按照FSalary進(jìn)行排序,然后計(jì)算從第一行(UNBOUNDED PRECEDING)到當(dāng)前行(CURRENT ROW)的人員的最大工資值。

例子程序6:over(partition by XX order by XX) partition by和order by 結(jié)合

員工信息+同齡人最高工資,按工資排序

SELECT FName, FSalary,FAge,
MAX(FSalary) OVER(PARTITION BY FAge order by fsalary) 同齡人最高工資
FROM T_Person;

PARTITION BY子句和ORDER BY 可以 共 同 使用,從 而 可以 實(shí)現(xiàn) 更 加復(fù) 雜 的 功能

==================================================================================

高級(jí)開窗函數(shù)/ 排名的實(shí)現(xiàn)ROW_NUMBER();rank() ,dense_rank()

除了可以在開窗函數(shù)中使用COUNT()、SUM()、MIN()、MAX()、AVG()等這些聚合函數(shù),還可以在開窗函數(shù)中使用一些高級(jí)的函數(shù),有些函數(shù)同時(shí)被DB2和Oracle同時(shí)支持,比如RANK()、DENSE_RANK()、ROW_NUMBER(),而有些函數(shù)只被Oracle支持,比如RATIO_TO_REPORT()、NTILE()、LEAD()、LAG()、FIRST_VALUE()、LAST_VALUE()。

下面對(duì)這幾個(gè)函數(shù)進(jìn)行詳細(xì)介紹。

RANK()和DENSE_RANK()函數(shù)都可以用于計(jì)算一行的排名,不過對(duì)于并列排名的處理方式不同;ROW_NUMBER()函數(shù)計(jì)算一行在結(jié)果集中的行號(hào),同樣可以將其當(dāng)成排名函數(shù)。這三個(gè)函數(shù)的功能存在一定的差異,舉例如下:工資從高到低排名:

SELECT FName, FSalary,FAge,
RANK() OVER(ORDER BY fsalary desc) f_RANK,
DENSE_RANK() OVER(ORDER BY fsalary desc) f_DENSE_RANK,
ROW_NUMBER() OVER(ORDER BY fsalary desc) f_ROW_NUMBER
FROM T_Person;

rank(),dense_rank()語法:

RANK()
dense_rank()
【語法】RANK ( ) OVER ( [query_partition_clause] order_by_clause )
dense_RANK ( ) OVER ( [query_partition_clause] order_by_clause )

【功能】聚合函數(shù)RANK 和 dense_rank 主要的功能是計(jì)算一組數(shù)值中的排序值。
【參數(shù)】dense_rank與rank()用法相當(dāng),
【區(qū)別】dence_rank在并列關(guān)系是,相關(guān)等級(jí)不會(huì)跳過。rank則跳過
rank()是跳躍排序,有兩個(gè)第二名時(shí)接下來就是第四名(同樣是在各個(gè)分組內(nèi))
dense_rank()l是連續(xù)排序,有兩個(gè)第二名時(shí)仍然跟著第三名。

row_number() 函數(shù)語法:

ROW_NUMBER()
【語法】ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)
【功能】表示根據(jù)COL1分組,在分組內(nèi)部根據(jù) COL2排序,而這個(gè)值就表示每組內(nèi)部排序后的順序編號(hào)(組內(nèi)連續(xù)的唯一的)
row_number() 返回的主要是“行”的信息,并沒有排名
【參數(shù)】
【說明】Oracle分析函數(shù)

主要功能:用于取前幾名,或者最后幾名等

===================================================================

排序函數(shù)實(shí)際場景使用:計(jì)算排行榜,排名

微信活動(dòng),每天參與,有得分,活動(dòng)結(jié)束后選出排名靠前的發(fā)獎(jiǎng)。

每參與一次,就是一個(gè)訂單,表結(jié)構(gòu):

比如要查詢期號(hào)issue為20170410期的排行榜,按得分倒敘排序,得分一樣按訂單創(chuàng)建先后,算排行,sql需要這么寫:

select ROWNUM rank, t.*
 from (select *
   from t_zhcw_order
   where issue = '20170410'
   order by integral desc, create_date asc) t

使用了開窗函數(shù)后就可以簡化:

select t.*,
    row_number() over(order by t.integral desc, t.create_date asc) 排名
   from t_zhcw_order t
   where issue = '20170410'

如果想只要排名范圍,可以在外邊再包一層,這也是高效分頁的一種方式:

select tt.* from (
select t.id,
  t.integral,
  t.cell,
  t.create_date,
  row_number() over(order by t.integral desc, t.create_date asc) rankNum
 from t_zhcw_order t
 where t.issue = 20170331
)tt where tt.rankNum=50

到此這篇關(guān)于SQL開窗函數(shù)的具體實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)SQL開窗函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • SQL中的開窗函數(shù)詳解可代替聚合函數(shù)使用
  • Sql Server 開窗函數(shù)Over()的使用實(shí)例詳解
  • SQL Server 2012 開窗函數(shù)
  • sql server如何利用開窗函數(shù)over()進(jìn)行分組統(tǒng)計(jì)

標(biāo)簽:來賓 銅仁 天水 宿州 七臺(tái)河 益陽 防疫戰(zhàn)設(shè) 威海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL開窗函數(shù)的具體實(shí)現(xiàn)詳解》,本文關(guān)鍵詞  SQL,開窗,函數(shù),的,具體,實(shí)現(xiàn),;如發(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開窗函數(shù)的具體實(shí)現(xiàn)詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQL開窗函數(shù)的具體實(shí)現(xiàn)詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲人午夜精品天堂一二香蕉| 亚洲视频电影在线| 日本一区二区三区四区| 亚洲综合一二三区| 风间由美一区二区三区在线观看 | 国产清纯在线一区二区www| 亚洲在线视频免费观看| 国产自产v一区二区三区c| 欧美日韩一区二区三区高清 | 91黄视频在线| 国产日韩欧美一区二区三区乱码 | 亚洲免费在线观看视频| 国产精品综合二区| 日韩精品在线一区二区| 婷婷丁香久久五月婷婷| 色哟哟一区二区三区| 国产日韩欧美精品综合| 精品一区二区三区免费| 欧美一级免费大片| 亚洲一级二级三级| 色婷婷av一区二区| 国产精品久久久久久户外露出| 国产黑丝在线一区二区三区| 精品欧美久久久| 精品无人区卡一卡二卡三乱码免费卡| 欧美日韩mp4| 图片区日韩欧美亚洲| 欧美日韩一区高清| 亚洲va欧美va人人爽| 欧美午夜视频网站| 亚洲一线二线三线久久久| 欧美亚洲国产一区二区三区va| 最新成人av在线| av在线不卡观看免费观看| 国产精品久久久久久久久久久免费看| 国产一区二区三区免费播放| 国产免费成人在线视频| voyeur盗摄精品| 亚洲精品视频在线看| 91国产精品成人| 五月天一区二区三区| 7777女厕盗摄久久久| 精品午夜久久福利影院| 亚洲国产经典视频| 在线中文字幕一区二区| 亚洲国产欧美一区二区三区丁香婷| 欧美日韩国产不卡| 精品一区二区三区的国产在线播放| 精品av久久707| 国产suv精品一区二区883| 亚洲人123区| 日韩视频一区二区三区在线播放| 狠狠色综合日日| 日韩一区在线看| 欧美色偷偷大香| 激情深爱一区二区| 中日韩av电影| 欧美日韩一级片网站| 久久99精品国产91久久来源| 中文字幕免费不卡| 欧美色电影在线| 久久国产综合精品| 综合激情网...| 欧美一二三区在线观看| 91在线你懂得| 另类小说视频一区二区| 中文字幕在线观看一区| 日韩视频一区二区在线观看| 99精品国产99久久久久久白柏| 午夜国产不卡在线观看视频| 久久久久久久久久久久久久久99| 色综合天天在线| 国产在线播放一区二区三区| 一区二区国产盗摄色噜噜| 久久久国产精品不卡| 欧美精品在线观看播放| 成人精品免费看| 天堂影院一区二区| 中文字幕一区在线观看| 日韩一区二区免费电影| 97久久久精品综合88久久| 久久99精品久久只有精品| 亚洲男人电影天堂| 久久久国产一区二区三区四区小说 | 成人亚洲精品久久久久软件| 亚洲成a人v欧美综合天堂下载| 久久久久久久久久电影| 欧美性大战久久久久久久蜜臀| 国产成a人亚洲| 九九九久久久精品| 亚洲成人资源网| 亚洲蜜臀av乱码久久精品| 国产日韩欧美a| 欧美变态口味重另类| 欧美综合一区二区| 在线中文字幕不卡| 91视频xxxx| 99这里只有精品| 国产精品996| 激情综合色播五月| 国模冰冰炮一区二区| 日韩va亚洲va欧美va久久| 亚洲国产视频一区| 亚洲一区中文日韩| 亚洲v中文字幕| 午夜伦欧美伦电影理论片| 亚洲男同性视频| 亚洲综合av网| 视频在线观看91| 日韩精品欧美成人高清一区二区| 亚洲午夜在线观看视频在线| 亚洲国产中文字幕| 亚洲国产成人精品视频| 日韩成人午夜精品| 精品一区中文字幕| 国产经典欧美精品| www..com久久爱| 色狠狠色噜噜噜综合网| 欧美三级一区二区| 91精品蜜臀在线一区尤物| 777奇米四色成人影色区| 日韩视频一区二区三区在线播放 | 88在线观看91蜜桃国自产| 欧美无砖专区一中文字| 欧美日韩国产一级二级| 欧美一区二区国产| 亚洲精品在线电影| 国产精品久久久久久久久免费樱桃| 亚洲色大成网站www久久九九| 亚洲综合999| 精品中文字幕一区二区小辣椒| 国产美女一区二区三区| 不卡的电影网站| 欧美日韩高清在线| 久久精品在线观看| 亚洲天堂成人在线观看| 水野朝阳av一区二区三区| 免费不卡在线观看| 黄网站免费久久| 在线精品视频免费播放| 欧美一区二区福利视频| 亚洲欧洲性图库| 日本aⅴ精品一区二区三区| 国产在线精品不卡| 在线日韩av片| 精品久久久久久久久久久久包黑料 | 亚洲黄色免费网站| 狠狠色伊人亚洲综合成人| 99热99精品| 日韩一区二区三区在线视频| 国产精品二三区| 午夜精品久久久久| 成人黄色av电影| 欧美一区二区国产| 亚洲精品菠萝久久久久久久| 久久精品国产久精国产| 91蜜桃传媒精品久久久一区二区| 欧美一区二区在线播放| 成人免费在线视频观看| 久久99热这里只有精品| 欧美亚洲综合在线| 国产精品拍天天在线| 久久99国产精品久久| 色视频一区二区| 国产亚洲欧美激情| 日本人妖一区二区| 色哟哟精品一区| 久久久www成人免费无遮挡大片| 亚洲国产你懂的| 色av综合在线| 国产精品无人区| 国产麻豆一精品一av一免费| 欧美日韩1234| 亚洲在线中文字幕| 一本大道久久a久久综合婷婷| 久久精品一区蜜桃臀影院| 日本不卡在线视频| 欧美精品丝袜中出| 一卡二卡三卡日韩欧美| 91在线视频官网| 亚洲欧洲日韩在线| 成人一区二区三区在线观看| 国产午夜精品在线观看| 国产精品白丝av| 26uuu久久综合| 久久国内精品视频| 欧美tickling挠脚心丨vk| 蜜臀久久久久久久| 日韩一二在线观看| 欧美96一区二区免费视频| 欧美久久一二区| 日本网站在线观看一区二区三区 | 国产精品素人一区二区| 国产精品资源在线看| 精品国产污网站| 国产精品一区在线观看你懂的| 久久蜜臀中文字幕| thepron国产精品| 一区二区三区小说| 欧美日韩国产高清一区二区 |