精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MySQL8新特性窗口函數詳解

開發 前端
窗口函數的應用場景很廣,可以完成許多數據分析與挖掘任務。MySQL8 支持窗口函數是一個非常棒的特性,大大提高了 MySQL 在數據分析領域的競爭力。

本文博主給大家詳細講解一波 MySQL8 的新特性:「窗口函數」,相信大伙看完一定能有所收獲??。

  • 本文提供的 sql 示例都是基于 MySQL8,由博主親自執行確保可用
  • 博主github地址:http://github.com/wayn111 ,歡迎大家關注,點個star

簡介

MySQL8 窗口函數是一種特殊的函數,它可以在一組查詢行上執行類似于聚合的操作,但是不會將查詢行折疊為單個輸出行,而是為每個查詢行生成一個結果。窗口函數可以用來處理復雜的報表統計分析場景,例如計算移動平均值、累計和、排名等。其中博主認為它展現的主要威力在于「它能夠讓我們在不修改原有語句輸出結果的基礎上,直接添加新的聚合字段」。

一. 語法解析

窗口函數語法如下:

window_function_name ( [argument1, argument2, ...] ) 
OVER  (
  [ PARTITION BY col1, col2, ... ]
  [ORDER BY col3, col4, ...]
  [ ROWS | RANGE frame_start AND frame_end ]
)

window_function_name

window_function_name 函數可以是聚合函數或者非聚合函數。MySQL8 支持以下幾類窗口函數,

  1. 序號函數:用于為窗口內的每一行生成一個序號,例如 ROW_NUMBER(),RANK(),DENSE_RANK() 等。
  2. 分布函數:用于計算窗口內的每一行在整個分區中的相對位置,例如 PERCENT_RANK(),CUME_DIST() 等。
  3. 前后函數:用于獲取窗口內的當前行的前后某一行的值,例如 LAG(),LEAD() 等。
  4. 頭尾函數:用于獲取窗口內的第一行或最后一行的值,例如 FIRST_VALUE(),LAST_VALUE() 等。
  5. 聚合函數:用于計算窗口內的某個字段的聚合值,例如 SUM(),AVG(),MIN(),MAX() 等。

圖片圖片

MySQL官網提供

OVER

OVER 關鍵字很重要,用來標識是否使用窗口函數,語法如下

over_clause:
    {OVER (window_spec) | OVER window_name}

兩種形式都定義了窗口函數應該如何處理查詢行。它們的區別在于窗口是直接在 OVER() 中定義,還是基于 window_name 在 OVER 字句可以重復使用。

  1. OVER() 常規用法,窗口規范直接出現在 OVER 子句中的括號之間。
  2. OVER window_name 基于 Named Windows,是由查詢中其他地方的 WINDOW 子句定義的窗口規范的名稱,可以重復使用。本文后續會進行講解。

PARTITION BY

PARTITION BY子句用來將查詢結果劃分為不同的分區,窗口函數在每個分區上分別執行,語法如下

partition_clause:
    PARTITION BY expr [, expr] ..

ORDER BY

ORDER BY 子句用來對每個分區內的查詢結果進行排序,窗口函數將按照排序后的順序進行計算,語法如下

order_clause:
    ORDER BY expr [ASC|DESC] [, expr [ASC|DESC]] ...

frame_clause

frame_clause 是窗口函數的一個可選子句,用來指定每個分區內的數據范圍,可以是靜態的或動態的。語法如下

frame_clause:
    frame_units frame_extent

frame_units:
    {ROWS | RANGE}

其中,frame_units表示窗口范圍的單位,可以是ROWS或RANGE。ROWS表示基于行數,RANGE表示基于值的大小。frame_extent表示窗口范圍的起始位置和結束位置,可以是以下幾種形式:

  • CURRENT ROW: 表示當前行。
  • UNBOUNDED PRECEDING: 表示分區中的第一行。
  • UNBOUNDED FOLLOWING: 表示分區中的最后一行。
  • expr PRECEDING: 表示當前行減去expr的值。
  • expr FOLLOWING: 表示當前行加上expr的值。

例如,如果指定了ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,則表示窗口范圍包括當前行、前兩行和后一行。如果指定了RANGE BETWEEN 10 PRECEDING AND CURRENT ROW,則表示窗口范圍包括當前行和值在當前行減去10以內的所有行。如果沒有指定frame_clause,則默認為RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,即從分區開始到當前行。

圖片圖片

引用自網上

二. Named Windows

MySQL8的 Named Windows 是指在 WINDOW 子句中定義并命名的窗口,可以在 OVER 子句中通過窗口名來引用。使用 Named Windows 的好處是可以避免在多個OVER子句中重復定義相同的窗口,而只需要在 WINDOW 子句中定義一次,然后在 OVER 子句中引用即可。例如,下面的查詢使用了三個相同的窗口:

SELECT
  val,
  ROW_NUMBER () OVER (ORDER BY val) AS 'row_number',
  RANK () OVER (ORDER BY val) AS 'rank',
  DENSE_RANK () OVER (ORDER BY val) AS 'dense_rank'
FROM numbers;

可以使用Named Windows來簡化為:

SELECT
  val,
  ROW_NUMBER () OVER w AS 'row_number',
  RANK () OVER w AS 'rank',
  DENSE_RANK () OVER w AS 'dense_rank'
FROM numbers WINDOW w AS (ORDER BY val);

這樣就只需要在 WINDOW 子句中定義一個名為w的窗口,然后在三個OVER子句中引用它。

如果一個 OVER 子句使用了 OVER (window_name ...) 而不是 OVER window_name,則可以在引用的窗口名后面添加其他子句來修改窗口。例如,下面的查詢定義了一個包含分區的窗口,并在兩個 OVER 子句中使用不同的排序來修改窗口:

SELECT
  DISTINCT year, country,
  FIRST_VALUE (year) OVER (w ORDER BY year ASC) AS first,
  FIRST_VALUE (year) OVER (w ORDER BY year DESC) AS last
FROM sales WINDOW w AS (PARTITION BY country);

這樣就可以根據不同的排序來獲取每個國家的第一年和最后一年。

一個命名窗口的定義本身也可以以一個窗口名開頭。這樣可以實現窗口之間的引用,但不能形成循環。例如,下面的查詢定義了三個命名窗口,其中第二個和第三個都引用了第一個:

SELECT
  val,
  SUM(val) OVER w1 AS sum_w1,
  SUM(val) OVER w2 AS sum_w2,
  SUM(val) OVER w3 AS sum_w3
FROM numbers
WINDOW
  w1 AS (ORDER BY val),
  w2 AS (w1 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
  w3 AS (w2 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW);

這樣就可以根據不同的范圍來計算每個值的累計和。

三. SQL 示例

下面以一個簡單的示例表來說明 MySQL8 窗口函數的用法,提前準備 sql 腳本如下

CREATE TABLE `sales` (
  `id` int NOT NULL,
  `year` int DEFAULT NULL,
  `country` varchar(20) DEFAULT NULL,
  `product` varchar(20) DEFAULT NULL,
  `profit` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (1, 2000, 'Finland', 'Computer', 1500);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (2, 2000, 'Finland', 'Phone', 100);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (3, 2001, 'Finland', 'Phone', 10);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (4, 2001, 'India', 'Calculator', 75);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (5, 2000, 'India', 'Calculator', 75);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (6, 2000, 'India', 'Computer', 1200);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (7, 2000, 'USA', 'Calculator', 75);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (8, 2000, 'USA', 'Computer', 1500);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (9, 2001, 'USA', 'Calculator', 50);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (12, 2002, 'USA', 'Computer', 1200);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (13, 2001, 'USA', 'TV', 150);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (14, 2002, 'USA', 'TV', 100);
INSERT INTO `test_db`.`sales` (`id`, `year`, `country`, `product`, `profit`) VALUES (15, 2001, 'USA', 'Computer', 1500);

這是一個銷售信息表,包含年份、國家、產品和利潤四個字段。讓我們基于窗口函數來進行一些統計分析,例如:

問題一

計算每個國家每年的總利潤,并按照國家和年份排序

SELECT year, country, 
SUM(profit) OVER (PARTITION BY country, year) AS total_profit
FROM sales
ORDER BY country, year;

輸出結果:

+------+---------+--------------+
| year | country | total_profit |
+------+---------+--------------+
| 2000 | Finland | 1600         |
| 2000 | Finland | 1600         |
| 2001 | Finland | 10           |
| 2000 | India   | 1275         |
| 2000 | India   | 1275         |
| 2001 | India   | 75           |
| 2000 | USA     | 1575         |
| 2000 | USA     | 1575         |
| 2001 | USA     | 1700         |
| 2001 | USA     | 1700         |
| 2001 | USA     | 1700         |
| 2002 | USA     | 1300         |
| 2002 | USA     | 1300         |
+------+---------+--------------+

可以看到,每個國家每年的總利潤都被計算出來了,但是沒有折疊為單個輸出行,而是為每個查詢行生成了一個結果。

在這里就體現出博主說的不修改原有結果的基礎上,添加聚合字段的威力。

問題二

計算每個國家每種產品的銷售排名,并按照國家和排名排序

SELECT country, product, profit, 
RANK() OVER (PARTITION BY country ORDER BY profit DESC) AS rank1
FROM sales
ORDER BY country, rank1;

輸出結果:

+---------+------------+--------+-------+
| country | product    | profit | rank1 |
+---------+------------+--------+-------+
| Finland | Computer   |   1500 |     1 |
| Finland | Phone      |    100 |     2 |
| Finland | Phone      |     10 |     3 |
| India   | Computer   |   1200 |     1 |
| India   | Calculator |     75 |     2 |
| India   | Calculator |     75 |     2 |
| USA     | Computer   |   1500 |     1 |
| USA     | Computer   |   1500 |     1 |
| USA     | Computer   |   1200 |     3 |
| USA     | TV         |    150 |     4 |
| USA     | TV         |    100 |     5 |
| USA     | Calculator |     75 |     6 |
| USA     | Calculator |     50 |     7 |
+---------+------------+--------+-------+

可以看到,每個國家每種產品的銷售排名都被計算出來了,使用了RANK()函數,它會給相同利潤的產品分配相同的排名,并跳過之后的排名。細心的朋友可能會發現相同國家產品的銷售排名重復之后,下一名會跳名次,如果不想這樣可以使用 DENSE_RANK() 函數,

mysql> SELECT country, product, profit, 
DENSE_RANK() OVER (PARTITION BY country ORDER BY profit DESC) AS rank1
FROM sales
ORDER BY country, rank1;
+---------+------------+--------+-------+
| country | product    | profit | rank1 |
+---------+------------+--------+-------+
| Finland | Computer   |   1500 |     1 |
| Finland | Phone      |    100 |     2 |
| Finland | Phone      |     10 |     3 |
| India   | Computer   |   1200 |     1 |
| India   | Calculator |     75 |     2 |
| India   | Calculator |     75 |     2 |
| USA     | Computer   |   1500 |     1 |
| USA     | Computer   |   1500 |     1 |
| USA     | Computer   |   1200 |     2 |
| USA     | TV         |    150 |     3 |
| USA     | TV         |    100 |     4 |
| USA     | Calculator |     75 |     5 |
| USA     | Calculator |     50 |     6 |
+---------+------------+--------+-------+

問題三

計算每個國家每種產品的累計利潤,并按照國家和利潤排序

SELECT country, product, profit, 
SUM(profit) OVER (PARTITION BY country ORDER BY profit 
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_profit
FROM sales
ORDER BY country, profit;

輸出結果:

+---------+------------+--------+-------------------+
| country | product    | profit | cumulative_profit |
+---------+------------+--------+-------------------+
| Finland | Phone      |     10 | 10                |
| Finland | Phone      |    100 | 110               |
| Finland | Computer   |   1500 | 1610              |
| India   | Calculator |     75 | 75                |
| India   | Calculator |     75 | 150               |
| India   | Computer   |   1200 | 1350              |
| USA     | Calculator |     50 | 50                |
| USA     | Calculator |     75 | 125               |
| USA     | TV         |    100 | 225               |
| USA     | TV         |    150 | 375               |
| USA     | Computer   |   1200 | 1575              |
| USA     | Computer   |   1500 | 3075              |
| USA     | Computer   |   1500 | 4575              |
+---------+------------+--------+-------------------+

可以看到,每個國家每種產品的累計利潤都被計算出來了,使用了SUM()函數,并指定了ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW作為窗口范圍,表示從分區開始到當前行。

問題四

基于Named Window 重寫問題三,sql 如下

SELECT country, product, profit, 
SUM(profit) OVER w1 AS cumulative_profit
FROM sales
WINDOW
  w1 as (PARTITION BY country ORDER BY profit 
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
ORDER BY country, profit
;

輸出結果:

+---------+------------+--------+-------------------+
| country | product    | profit | cumulative_profit |
+---------+------------+--------+-------------------+
| Finland | Phone      |     10 | 10                |
| Finland | Phone      |    100 | 110               |
| Finland | Computer   |   1500 | 1610              |
| India   | Calculator |     75 | 75                |
| India   | Calculator |     75 | 150               |
| India   | Computer   |   1200 | 1350              |
| USA     | Calculator |     50 | 50                |
| USA     | Calculator |     75 | 125               |
| USA     | TV         |    100 | 225               |
| USA     | TV         |    150 | 375               |
| USA     | Computer   |   1200 | 1575              |
| USA     | Computer   |   1500 | 3075              |
| USA     | Computer   |   1500 | 4575              |
+---------+------------+--------+-------------------+

四. 窗口函數優缺點

優點:

  • 窗口函數可以在不改變原表行數的情況下,對每個分區內的查詢行進行聚合、排序、排名等操作,提高了數據分析的靈活性和效率。
  • 窗口函數可以使用滑動窗口來處理動態的數據范圍,例如計算移動平均值、累計和等。
  • 窗口函數可以與普通聚合函數、子查詢等結合使用,實現更復雜的查詢邏輯。

缺點:

  • 窗口函數的語法較為復雜,需要注意OVER子句中的各個參數的含義和作用。
  • 窗口函數的執行效率可能不如普通聚合函數,因為它需要對每個分區內的每個查詢行進行計算,而不是折疊為單個輸出行。
  • 窗口函數只能在SELECT列表和ORDER BY子句中使用,不能用于WHERE、GROUP BY、HAVING等子句中。

五、總結

窗口函數的應用場景很廣,可以完成許多數據分析與挖掘任務。MySQL8 支持窗口函數是一個非常棒的特性,大大提高了 MySQL 在數據分析領域的競爭力。希望通過這篇文章可以幫助大家對 MySQL8 的窗口函數有一個初步的認識。

責任編輯:武曉燕 來源: waynblog
相關推薦

2014-04-16 07:43:31

Java 8JRE

2014-07-15 14:12:17

Java8

2021-02-22 11:51:15

Java開發代碼

2013-07-29 15:13:35

2021-09-27 06:50:06

MySQL參數持久化

2014-07-15 14:48:26

Java8

2020-05-14 11:19:19

降序索引子集

2009-07-27 09:46:28

Silverlight

2009-06-29 17:42:03

Tapestry5新特

2012-01-09 16:00:56

2014-10-20 13:57:59

JavaFX 8Java 8

2013-04-09 12:59:21

WindowsPhon

2011-02-21 16:39:47

Android 2.3Android R5

2010-06-23 15:29:52

Eclipse 3.6Java

2024-04-18 08:04:47

ElectronChrome升級

2014-07-14 11:34:53

Java 8Nashorn

2009-01-16 10:01:57

MySQL復制特性測試

2022-12-09 07:48:10

Java8Stream表達式

2022-12-30 09:24:23

Java8Stream操作

2011-05-07 16:08:29

Windows 8
點贊
收藏

51CTO技術棧公眾號

久久久久伊人| 亚洲免费成人网| 一区三区在线欧| 欧美日韩国产中文字幕| 国产精品国产精品| 日韩欧美三级视频| 免费视频亚洲| 欧美在线观看视频在线| 一区二区三区在线观看www| 亚洲一区中文字幕在线| 91精品国产91久久久久久黑人| 欧美日韩性生活| 中文字幕一区二区三区乱码| 精品国自产拍在线观看| 亚洲成人直播| 亚洲男人天堂2023| 中文字幕 日韩 欧美| 欧美巨大xxxx做受沙滩| 91看片淫黄大片一级| 国产精品久久久久久久一区探花| 国产福利在线导航| 99国内精品久久久久| 一区二区三区日韩| 美女被啪啪一区二区| 怡红院成永久免费人全部视频| 欧美a级片网站| 亚洲精品不卡在线| 999精彩视频| 爱情岛亚洲播放路线| 91麻豆文化传媒在线观看| 国产精品高潮呻吟久久av野狼| 国产黄色的视频| 希岛爱理av免费一区二区| 欧美日韩亚洲综合| 999在线观看视频| 国产二区视频在线观看| 国产福利一区在线观看| 日韩av免费看| 亚洲最大的黄色网址| 日韩高清影视在线观看| 欧美日本韩国一区| 久久综合色视频| 日本成人网址| 久久午夜色播影院免费高清| 亚洲v日韩v综合v精品v| 手机在线看片1024| 亚洲欧美亚洲| 这里只有精品视频在线| 国产网站无遮挡| 国产日韩一区二区三免费高清 | 在线观看天堂av| 欧美绝顶高潮抽搐喷水合集| 欧美精品tushy高清| 色综合av综合无码综合网站| 在线观看男女av免费网址| 久久免费看少妇高潮| 91亚洲国产精品| 免费在线观看黄网站| 国产探花一区| 亚洲国产欧美一区| 无人码人妻一区二区三区免费| 澳门av一区二区三区| 香蕉成人啪国产精品视频综合网| 亚洲国产成人不卡| 毛片在线播放网站| 91网站最新网址| 国产chinese精品一区二区| 一区二区的视频| 久久国产剧场电影| 国产精品免费网站| 久草视频精品在线| 亚洲高清影视| 久久在线免费观看视频| 中文字幕观看av| 欧美激情偷拍自拍| 日韩亚洲综合在线| 三级黄色免费观看| 日韩在线视频精品| 久久精品精品电影网| 中文乱码字幕高清一区二区| 国产精品久久观看| 日韩在线免费观看视频| 久久久久久国产免费a片| 国产中文字幕一区二区三区| 亚洲欧美日韩高清| 三年中国中文观看免费播放| 久久精品国产大片免费观看| 色婷婷久久av| 91激情视频在线观看| 欧美日韩激情| 一个人www欧美| 国产精品综合激情| 亚洲中无吗在线| 欧美日韩成人在线播放| 黄网站免费在线| 一本综合久久| 国产精品成人一区| 97国产精品久久久| 波多野洁衣一区| 欧美日本国产精品| 9色在线视频网站| 18成人在线观看| 97在线国产视频| 日本不卡一二三| 欧美日韩一区中文字幕| 久久艹这里只有精品| 亚洲一区二区三区免费| 日韩av网站大全| 一级国产黄色片| 国产乱码精品一区二区亚洲 | 天天爽夜夜爽夜夜爽| 久久久综合网站| 亚洲欧洲精品在线| 毛片在线导航| 欧美在线观看18| 日韩久久久久久久久久久| 国产一区二区三区亚洲| 国产亚洲精品va在线观看| 黄色一级大片在线免费观看| 亚洲高清免费| 国产精品免费电影| 性生活三级视频| 久久久.com| 欧洲av一区| 特级毛片在线| 色婷婷av久久久久久久| 日本中文字幕精品| 精品久久综合| 久久久久久久久综合| 男操女视频网站| 成人性生交大片免费看中文| 麻豆一区区三区四区产品精品蜜桃| 在线观看av黄网站永久| 亚洲va中文字幕| 黄色小视频免费网站| 亚洲精品aaaaa| 欧美日本中文字幕| 国产精品国产av| 91美女片黄在线观看91美女| 国产又爽又黄ai换脸| 忘忧草在线日韩www影院| 欧美一二三区在线观看| 精品国产成人亚洲午夜福利| 国产精品99免费看| 成人黄色免费片| 色鬼7777久久| 亚洲国产乱码最新视频| 手机看片福利日韩| 亚洲va久久久噜噜噜久久| 欧美乱妇40p| 一区二区三区播放| 国产日韩欧美麻豆| 波多野结衣家庭教师在线| 日本久久伊人| 久久精品99国产精品酒店日本| 日韩手机在线视频| 91美女视频网站| 黄页网站在线观看视频| 波多野结衣欧美| 久久在线观看视频| 99国产精品欲| 自拍偷在线精品自拍偷无码专区| 青青青在线视频免费观看| 欧美日韩导航| 午夜精品久久久久久久久久久久 | 菠萝菠萝蜜在线观看| 欧美日韩另类一区| 女人十八毛片嫩草av| 日韩电影在线一区| 欧美福利精品| 国产精品av一区二区三区| 亚洲аv电影天堂网| 免费三片在线播放| 成人午夜av电影| 日韩a级在线观看| 老司机在线精品视频| 久久久久久av| 色噜噜一区二区三区| 亚洲欧美另类图片小说| 欧美在线aaa| 99久久精品费精品国产风间由美 | 美国av在线播放| 欧美亚洲黄色| 在线国产精品视频| 夜夜嗨av禁果av粉嫩avhd| 中文字幕亚洲欧美在线不卡| 欧美在线a视频| 亚洲国产一区二区三区在线播放 | 国产99久久久久久免费看| 国产调教视频一区| 在线观看国产一级片| 国产一区二区亚洲| 国产在线日韩在线| 在线观看h片| 91精品国产美女浴室洗澡无遮挡| 免费在线观看av网址| a级高清视频欧美日韩| 浮妇高潮喷白浆视频| 久久av网址| 成人精品一区二区三区电影免费| 男人和女人做事情在线视频网站免费观看| 91精品国产免费久久综合| 日本少妇在线观看| 国产婷婷一区二区| 欧美性猛交xx| 国产精品最新自拍| 亚洲欧美日韩国产yyy| 成人激情久久| 久久久久久久久久国产| 日本高清视频免费观看| 色综合色综合色综合色综合色综合| 波多野结衣av在线观看| 国模大尺度一区二区三区| 日韩视频在线视频| 欧美综合在线视频观看| www.久久久| 欧美动物xxx| 欧美日韩成人在线播放| 免费国产在线视频| 91精品国产全国免费观看| 欧美福利视频一区二区| 中文字幕中文乱码欧美一区二区| 四川一级毛毛片| 国产欧美日本| 特色特色大片在线| 综合色就爱涩涩涩综合婷婷| 91久久精品国产91久久性色| 天堂av中文在线观看| 欧美大尺度在线观看| 久久久久久女乱国产| 日韩欧美123| 成人免费一区二区三区| 午夜成人免费视频| 黑人狂躁日本娇小| 久久久久久久久伊人| 欧美特级aaa| 国产综合婷婷| 宅男在线精品国产免费观看| 亚洲区小说区图片区qvod| 97se亚洲综合| 欧美综合影院| 日韩女优在线播放| av免费在线视| 欧美激情精品久久久久久蜜臀 | 国产麻豆日韩欧美久久| 久久久伊人日本| 波多野结衣家庭教师视频| 久久国产中文字幕| 欧美精彩一区二区三区| 大桥未久女教师av一区二区| 国产欧美日韩丝袜精品一区| 免费观看欧美大片| 97精品在线视频| 欧美v亚洲v| 欧美老女人性视频| 拍真实国产伦偷精品| 亚洲丁香久久久| 性欧美18一19性猛交| 91麻豆精品91久久久久同性| 日韩国产成人在线| 一本久久a久久精品亚洲| 国产污视频在线观看| 一区二区欧美在线观看| 国产av无码专区亚洲av毛网站| 国产精品福利av| 国产又黄又粗又猛又爽的| 久久综合久久综合久久综合| 国产a级黄色片| 成人国产精品免费| 成人做爰www看视频软件| 国产成人av自拍| 天堂va欧美va亚洲va老司机| 国产精品538一区二区在线| 亚洲欧美天堂在线| 国产麻豆9l精品三级站| 下面一进一出好爽视频| 懂色av中文一区二区三区 | 国产一区久久精品| 久久躁日日躁aaaaxxxx| 欧美wwww| 26uuu日韩精品一区二区| 一区二区三区短视频| 97视频在线观看成人| 欧美男男tv网站在线播放| 69久久夜色精品国产7777| 欧美草逼视频| 欧美在线影院在线视频| 大桥未久在线视频| 午夜剧场成人观在线视频免费观看| 成人国产电影在线观看| 日韩免费观看av| 久久麻豆视频| 超碰97国产在线| 激情亚洲另类图片区小说区| 欧美一区二区三区电影在线观看| 国内精品久久久久久久影视简单 | 国产在线成人精品午夜| 一区二区三区四区不卡在线| 看片网址国产福利av中文字幕| 亚洲成av人片www| 波多野结衣高清视频| 欧美精品亚洲一区二区在线播放| 国产深喉视频一区二区| 亚洲白虎美女被爆操| 欧美另类自拍| 久久精品国产亚洲| 成人影院在线视频| 欧洲亚洲免费视频| 日韩精品麻豆| 99www免费人成精品| 精品产国自在拍| 成人区一区二区| 丝袜美腿亚洲色图| 日本亚洲一区二区三区| 99精品欧美一区二区三区小说 | 亚洲va在线观看| 欧美精品一二三| 天天操天天干天天操| 中文字幕在线看视频国产欧美| 欧美videossex| 国产精品色悠悠| 亚洲国产视频二区| 翔田千里亚洲一二三区| 欧美日一区二区在线观看 | 在线免费黄色| 欧美精品18videos性欧| 久草免费在线视频| 国产精品三级美女白浆呻吟| 久久中文资源| 免费观看中文字幕| 日韩精品一区第一页| 一起操在线视频| 91丨porny丨国产| 免费中文字幕在线观看| 欧美色中文字幕| 欧美成人免费| 97欧美精品一区二区三区| 国产色99精品9i| 亚洲激情一区二区三区| 亚洲制服av| 一级少妇精品久久久久久久| 国产欧美1区2区3区| 国产成人无码精品久在线观看| 在线播放欧美女士性生活| 黄视频在线观看免费| 亚洲**2019国产| 一本一道久久a久久| 久久亚洲欧美日韩精品专区 | 亚洲一区二区欧美日韩| a级片在线视频| 久久成人在线视频| 国产日韩中文在线中文字幕| 成人免费看片视频在线观看| 国产一区二区网址| 久久久久亚洲av无码专区体验| 日韩一区二区免费视频| 欧美人与牲禽动交com| 国产精品theporn88| 亚洲日本免费| 黄色a一级视频| 欧美伊人久久久久久久久影院| 大胆av不用播放器在线播放| 国产精品久久久久久久久粉嫩av| 日韩欧美午夜| 日本一本在线视频| 亚洲一级二级三级在线免费观看| 国产自产一区二区| 欧美一乱一性一交一视频| 国产成人黄色| 国产一级片自拍| 亚洲资源中文字幕| 丝袜+亚洲+另类+欧美+变态| 午夜精品久久久久久99热| 亚洲免费福利一区| 爱情岛论坛亚洲首页入口章节| 亚洲欧洲精品成人久久奇米网| www.久久精品.com| 国内精品小视频在线观看| 啄木系列成人av电影| 日本在线播放一区二区| 亚洲在线视频网站| 欧美大片aaa| 91精品在线一区| 亚洲三级毛片| 亚洲一级片在线播放| 日韩精品一区二区三区视频| 伊人成综合网站| 异国色恋浪漫潭| k8久久久一区二区三区| 波多野结衣一本一道| 欧美日本黄视频| 国产乱码精品一区二区亚洲 | 国产亚洲一区二区在线| 亚洲老司机网| 久久综合色视频| 亚洲视频在线观看一区| 色视频在线观看| 亚洲在线观看视频| 久久亚洲风情| 国产亚洲欧美精品久久久久久|