日本高清免费一本视频100禁_在线不卡欧美精品一区二区三区_国产一区二区好的精华液_中文综合在线_国产啊啊啊视频在线观看_大地资源网免费观看高清

IT之道-艾銻知道

艾銻知識(shí) | SQL Server中with as使用介紹


2020-03-04 16:37 作者:艾銻無(wú)限 瀏覽量:


煩惱即菩提,菩提即智慧

 
 
 
 
 
疫情放慢了管理者的腳步,卻沒(méi)有放慢管理者的心,對(duì)于企業(yè)來(lái)說(shuō),在富有的時(shí)候,可以說(shuō)說(shuō)情懷,說(shuō)說(shuō)理想,但在貧窮受困的時(shí)候,沒(méi)有飯吃的時(shí)候,情懷和理想其實(shí)并不重要,重要的是下一頓吃什么?在哪吃呢?
 
前幾天,有篇文章報(bào)道某云南大型企業(yè)的人事總監(jiān)被總經(jīng)理怒罵的郵件很火,為什么會(huì)發(fā)生這樣的事,我覺(jué)得身為一個(gè)企業(yè)的員工,無(wú)論你處在什么崗位,什么職位,一定要審時(shí)度勢(shì),要知道企業(yè)要什么,俗話說(shuō),大河有水小河滿,只有企業(yè)活下來(lái)了,活好了,組織里的員工才能真正拿到自己想要的,如果在危難時(shí)機(jī),你還在堅(jiān)持自己觀點(diǎn),抱持著自己的思維不改變,不能與企業(yè)思想同步,那最終也不會(huì)有什么好的結(jié)果.
 
在這里艾銻無(wú)限給已經(jīng)上班或即將上班的各個(gè)企業(yè)伙伴一些忠告:
 
1,困難時(shí)期,在為自己著想的同時(shí)多想想能為企業(yè)做點(diǎn)什么,今天你的付出,明天不一定會(huì)有收獲,但長(zhǎng)久來(lái)看,能量守恒定律,你是不會(huì)吃虧的.
 
2,在經(jīng)濟(jì)還沒(méi)復(fù)蘇的時(shí)期,企業(yè)還不太忙的時(shí)候,除了做好自己部門(mén)手頭上的工作以外,把自己的大腦開(kāi)動(dòng)起來(lái),如果你是職員,就想想假如你是這個(gè)部門(mén)經(jīng)理,你如何做可以讓部門(mén)的損失降到最低,讓收益提升到最大.如果你是經(jīng)理就想想假如你是企業(yè)的CEO,你如何做可以讓企業(yè)快速恢復(fù)狀態(tài),讓業(yè)務(wù)快速發(fā)展起來(lái),讓現(xiàn)金流可以流動(dòng)起來(lái)?
 
3,如果你處在花錢(qián)的部門(mén),就想想如何做可以省錢(qián),又可以為部門(mén)創(chuàng)收,如果你是創(chuàng)收的部門(mén),就想想原來(lái)從來(lái)就沒(méi)想過(guò)的問(wèn)題,因?yàn)槟悴荒芷婆f就不能立新,不能創(chuàng)造就是在消耗.
 
4,管理團(tuán)隊(duì)間,如果不是能力問(wèn)題,不僅行動(dòng)要勤快,大腦更要勤快一些,除了思考自己部門(mén)的工作,也要思考其他部門(mén)的工作,你的團(tuán)隊(duì)可以做些什么更利于其他部門(mén)的發(fā)展,你可以做些什么更助于其他管理者達(dá)成目標(biāo),整個(gè)企業(yè)就像一臺(tái)齒輪吻合的機(jī)器,只有彼此主動(dòng)吻合才能讓這臺(tái)機(jī)器更好的運(yùn)轉(zhuǎn),這也像打群架,如果每一個(gè)人都能照顧好自己,還能為他人著想,就不會(huì)受傷,也能全身而退,有一個(gè)人需要他人照顧,就很可能有人受傷,并導(dǎo)致全隊(duì)受損.
 
5,無(wú)論什么時(shí)期,不要害怕困難,不要拒絕煩惱, 煩惱即菩提,菩提即智慧,偉大的洞見(jiàn)和上師都是來(lái)自于苦難和無(wú)數(shù)次的折磨.相信宇宙的安排,無(wú)論是事,還是人,來(lái)到你的身邊就是成就你的,所以把心安于當(dāng)下,盡一切努力做到盡善盡美.
 
接下來(lái)分享一則技術(shù)信息,以許會(huì)對(duì)你的企業(yè)有所幫助:

艾銻知識(shí) |SQL Server中with as使用介紹

一.WITH AS的含義 

    WITH AS短語(yǔ),也叫做子查詢部分(subquery factoring),可以讓你做很多事情,定義一個(gè)SQL片斷,該SQL片斷會(huì)被整個(gè)SQL語(yǔ)句所用到。有的時(shí)候,是為了讓SQL語(yǔ)句的可讀性更高些,也有可能是在UNION ALL的不同部分,作為提供數(shù)據(jù)的部分。
特別對(duì)于UNION ALL比較有用。因?yàn)閁NION ALL的每個(gè)部分可能相同,但是如果每個(gè)部分都去執(zhí)行一遍的話,則成本太高,所以可以使用WITH AS短語(yǔ),則只要執(zhí)行一遍即可。如果WITH AS短語(yǔ)所定義的表名被調(diào)用兩次以上,則優(yōu)化器會(huì)自動(dòng)將WITH AS短語(yǔ)所獲取的數(shù)據(jù)放入一個(gè)TEMP表里,如果只是被調(diào)用一次,則不會(huì)。而提示materialize則是強(qiáng)制將WITH AS短語(yǔ)里的數(shù)據(jù)放入一個(gè)全局臨時(shí)表里。很多查詢通過(guò)這種方法都可以提高速度。

二.使用方法

先看下面一個(gè)嵌套的查詢語(yǔ)句:
select * from person.StateProvince where CountryRegionCode in
         (select CountryRegionCode from person.CountryRegion where Name like 'C%')
    上面的查詢語(yǔ)句使用了一個(gè)子查詢。雖然這條SQL語(yǔ)句并不復(fù)雜,但如果嵌套的層次過(guò)多,會(huì)使SQL語(yǔ)句非常難以閱讀和維護(hù)。因此,也可以使用表變量的方式來(lái)解決這個(gè)問(wèn)題,SQL語(yǔ)句如下:
declare @t table(CountryRegionCode nvarchar(3))
insert into @t(CountryRegionCode) (select CountryRegionCode from person.CountryRegion where Name like 'C%')
select * from person.StateProvince where CountryRegionCode
                     in (select * from @t)
   雖然上面的SQL語(yǔ)句要比第一種方式更復(fù)雜,但卻將子查詢放在了表變量@t中,這樣做將使SQL語(yǔ)句更容易維護(hù),但又會(huì)帶來(lái)另一個(gè)問(wèn)題,就是性能的損失。由于表變量實(shí)際上使用了臨時(shí)表,從而增加了額外的I/O開(kāi)銷,因此,表變量的方式并不太適合數(shù)據(jù)量大且頻繁查詢的情況。為此,在SQL Server 2005中提供了另外一種解決方案,這就是公用表表達(dá)式(CTE),使用CTE,可以使SQL語(yǔ)句的可維護(hù)性,同時(shí),CTE要比表變量的效率高得多。
    下面是CTE的語(yǔ)法:
[ WITH <common_table_expression> [ ,n ] ]
< common_table_expression>::=
        expression_name [ ( column_name [ ,n ] ) ]
    AS
        ( CTE_query_definition )
    現(xiàn)在使用CTE來(lái)解決上面的問(wèn)題,SQL語(yǔ)句如下:
with
cr as
(
    select CountryRegionCode from person.CountryRegion where Name like 'C%'
)
select * from person.StateProvince where CountryRegionCode in (select * from cr)
    其中cr是一個(gè)公用表表達(dá)式,該表達(dá)式在使用上與表變量類似,只是SQL Server 2005在處理公用表表達(dá)式的方式上有所不同。

在使用CTE時(shí)應(yīng)注意如下幾點(diǎn):

1. CTE后面必須直接跟使用CTE的SQL語(yǔ)句(如select、insert、update等),否則,CTE將失效。如下面的SQL語(yǔ)句將無(wú)法正常使用CTE:

1
2
3
4
5
6
7
8
with
cr as
(
  select CountryRegionCode from person.CountryRegion where Name like 'C%'
)
select * from person.CountryRegion -- 應(yīng)將這條SQL語(yǔ)句去掉
-- 使用CTE的SQL語(yǔ)句應(yīng)緊跟在相關(guān)的CTE后面 --
select * from person.StateProvince where CountryRegionCode in (select * from cr)
2. CTE后面也可以跟其他的CTE,但只能使用一個(gè)with,多個(gè)CTE中間用逗號(hào)(,)分隔,如下面的SQL語(yǔ)句所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
with
cte1 as
(
  select * from table1 where name like 'abc%'
),
cte2 as
(
  select * from table2 where id > 20
),
cte3 as
(
  select * from table3 where price < 100
)
select a.* from cte1 a, cte2 b, cte3 c where a.id = b.id and a.id = c.id

3. 如果CTE的表達(dá)式名稱與某個(gè)數(shù)據(jù)表或視圖重名,則緊跟在該CTE后面的SQL語(yǔ)句使用的仍然是CTE,當(dāng)然,后面的SQL語(yǔ)句使用的就是數(shù)據(jù)表或視圖了,如下面的SQL語(yǔ)句所示:
-- table1是一個(gè)實(shí)際存在的表
with
table1 as
(
    select * from persons where age < 30
)
select * from table1 -- 使用了名為table1的公共表表達(dá)式
select * from table1 -- 使用了名為table1的數(shù)據(jù)表
4. CTE 可以引用自身,也可以引用在同一 WITH 子句中預(yù)先定義的 CTE。不允許前向引用。
5. 不能在 CTE_query_definition 中使用以下子句:
(1)COMPUTE 或 COMPUTE BY
(2)ORDER BY(除非指定了 TOP 子句)
(3)INTO
(4)帶有查詢提示的 OPTION 子句
(5)FOR XML
(6)FOR BROWSE
6. 如果將 CTE 用在屬于批處理的一部分的語(yǔ)句中,那么在它之前的語(yǔ)句必須以分號(hào)結(jié)尾,如下面的SQL所示:

1
2
3
4
5
6
7
8
9
declare @s nvarchar(3)
set @s = 'C%'
; -- 必須加分號(hào)
with
t_tree as
(
  select CountryRegionCode from person.CountryRegion where Name like @s
)
select * from person.StateProvince where CountryRegionCode in (select * from t_tree)
  
  CTE除了可以簡(jiǎn)化嵌套SQL語(yǔ)句外,還可以進(jìn)行遞歸調(diào)用,關(guān)于這一部分的內(nèi)容將在下一篇文章中介紹。
先看如下一個(gè)數(shù)據(jù)表(t_tree):
    上圖顯示了一個(gè)表中的數(shù)據(jù),這個(gè)表有三個(gè)字段:id、node_name、parent_id。實(shí)際上,這個(gè)表中保存了一個(gè)樹(shù)型結(jié)構(gòu),分三層:省、市、區(qū)。其中id表示當(dāng)前省、市或區(qū)的id號(hào)、node_name表示名稱、parent_id表示節(jié)點(diǎn)的父節(jié)點(diǎn)的id。
    現(xiàn)在有一個(gè)需求,要查詢出某個(gè)省下面的所有市和區(qū)(查詢結(jié)果包含省)。如果只使用SQL語(yǔ)句來(lái)實(shí)現(xiàn),需要使用到游標(biāo)、臨時(shí)表等技術(shù)。但在SQL Server2005中還可以使用CTE來(lái)實(shí)現(xiàn)。
    從這個(gè)需求來(lái)看屬于遞歸調(diào)用,也就是說(shuō)先查出滿足調(diào)價(jià)的省的記錄,在本例子中的要查“遼寧省”的記錄,如下:
id   node_name   parent_id
1     遼寧省        0
    然后再查所有parent_id字段值為1的記錄,如下:
id   node_name   parent_id
2      沈陽(yáng)市       1
3      大連市       1
    最后再查parent_id字段值為2或3的記錄,如下:
id    node_name    parent_id
4       大東區(qū)        2
5       沈河區(qū)        2
6       鐵西區(qū)        2
    將上面三個(gè)結(jié)果集合并起來(lái)就是最終結(jié)果集。
    上述的查詢過(guò)程也可以按遞歸的過(guò)程進(jìn)行理解,即先查指定的省的記錄(遼寧省),得到這條記錄后,就有了相應(yīng)的id值,然后就進(jìn)入了的遞歸過(guò)程,如下圖所示。
    從上面可以看出,遞歸的過(guò)程就是使用union all合并查詢結(jié)果集的過(guò)程,也就是相當(dāng)于下面的遞歸公式:
    resultset(n) = resultset(n-1) union all current_resultset
    其中resultset(n)表示最終的結(jié)果集,resultset(n - 1)表示倒數(shù)第二個(gè)結(jié)果集,current_resultset表示當(dāng)前查出來(lái)的結(jié)果集,而最開(kāi)始查詢出“遼寧省”的記錄集相當(dāng)于遞歸的初始條件。而遞歸的結(jié)束條件是current_resultset為空。下面是這個(gè)遞歸過(guò)程的偽代碼:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public resultset getResultSet(resultset)
{
  if(resultset is null)
   {
     current_resultset =第一個(gè)結(jié)果集(包含省的記錄集)
     將結(jié)果集的id保存在集合中
     getResultSet(current_resultset)
   }
   current_resultset = 根據(jù)id集合中的id值查出當(dāng)前結(jié)果集
  if(current_result is null) return resultset
   將當(dāng)前結(jié)果集的id保存在集合中
  return  getResultSet(resultset union all current_resultset)
}
 
// 獲得最終結(jié)果集
resultset = getResultSet(null)
   
從上面的過(guò)程可以看出,這一遞歸過(guò)程實(shí)現(xiàn)起來(lái)比較復(fù)雜,然而CTE為我們提供了簡(jiǎn)單的語(yǔ)法來(lái)簡(jiǎn)化這一過(guò)程。
    實(shí)現(xiàn)遞歸的CTE語(yǔ)法如下:
[ WITH <common_table_expression> [ ,n ] ]
< common_table_expression>::=
         expression_name [ ( column_name [ ,n ] ) ]
    AS (
        CTE_query_definition1  --   定位點(diǎn)成員(也就是初始值或第一個(gè)結(jié)果集)
       union all
        CTE_query_definition2  --   遞歸成員
     )
sql語(yǔ)句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
with
district as
(
  --  獲得第一個(gè)結(jié)果集,并更新最終結(jié)果集
  select * from t_tree where node_name= N'遼寧省'
  union all
  --  下面的select語(yǔ)句首先會(huì)根據(jù)從上一個(gè)查詢結(jié)果集中獲得的id值來(lái)查詢parent_id    
  --  字段的值,然后district就會(huì)變當(dāng)前的查詢結(jié)果集,并繼續(xù)執(zhí)行下面的select 語(yǔ)句
  --  如果結(jié)果集不為null,則與最終的查詢結(jié)果合并,同時(shí)用合并的結(jié)果更新最終的查
  --  詢結(jié)果;否則停止執(zhí)行。最后district的結(jié)果集就是最終結(jié)果集。
  select a.* from t_tree a, district b
        where a.parent_id = b.id
)
select * from district
with
district as
(
  select * from t_tree where node_name= N'遼寧省'
  union all
  select a.* from t_tree a, district b
        where a.parent_id = b.id
),
district1 as
(
  select a.* from district a where a.id in (select parent_id from district) 
)
select * from district1
   
注:只有“遼寧省”和“沈陽(yáng)市”有下子節(jié)點(diǎn)。

    在定義和使用遞歸CTE時(shí)應(yīng)注意如下幾點(diǎn):

1. 遞歸 CTE 定義至少必須包含兩個(gè) CTE 查詢定義,一個(gè)定位點(diǎn)成員和一個(gè)遞歸成員。可以定義多個(gè)定位點(diǎn)成員和遞歸成員;但必須將所有定位點(diǎn)成員查詢定義置于第一個(gè)遞歸成員定義之前。所有 CTE 查詢定義都是定位點(diǎn)成員,但它們引用 CTE 本身時(shí)除外。

2. 定位點(diǎn)成員必須與以下集合運(yùn)算符之一結(jié)合使用:UNION ALL、UNION、INTERSECT 或 EXCEPT。在最后一個(gè)定位點(diǎn)成員和第一個(gè)遞歸成員之間,以及組合多個(gè)遞歸成員時(shí),只能使用 UNION ALL 集合運(yùn)算符。

3. 定位點(diǎn)成員和遞歸成員中的列數(shù)必須一致。

4. 遞歸成員中列的數(shù)據(jù)類型必須與定位點(diǎn)成員中相應(yīng)列的數(shù)據(jù)類型一致。

5. 遞歸成員的 FROM 子句只能引用一次 CTE expression_name。

6. 在遞歸成員的 CTE_query_definition 中不允許出現(xiàn)下列項(xiàng):

(1)SELECT DISTINCT

(2)GROUP BY

(3)HAVING

(4)標(biāo)量聚合

(5)TOP

(6)LEFT、RIGHT、OUTER JOIN(允許出現(xiàn) INNER JOIN)

(7)子查詢

(8)應(yīng)用于對(duì) CTE_query_definition 中的 CTE 的遞歸引用的提示。

7. 無(wú)論參與的 SELECT 語(yǔ)句返回的列的為空性如何,遞歸 CTE 返回的全部列都可以為空。

8. 如果遞歸 CTE 組合不正確,可能會(huì)導(dǎo)致無(wú)限循環(huán)。例如,如果遞歸成員查詢定義對(duì)父列和子列返回相同的值,則會(huì)造成無(wú)限循環(huán)。可以使用 MAXRECURSION 提示以及在 INSERT、UPDATE、DELETE 或 SELECT 語(yǔ)句的 OPTION 子句中的一個(gè) 0 到 32,767 之間的值,來(lái)限制特定語(yǔ)句所允許
的遞歸級(jí)數(shù),以防止出現(xiàn)無(wú)限循環(huán)。這樣就能夠在解決產(chǎn)生循環(huán)的代碼問(wèn)題之前控制語(yǔ)句的執(zhí)行。服務(wù)器范圍內(nèi)的默認(rèn)值是 100。如果指定 0,則沒(méi)有限制。每一個(gè)語(yǔ)句只能指定一個(gè) MAXRECURSION 值。

9. 不能使用包含遞歸公用表表達(dá)式的視圖來(lái)更新數(shù)據(jù)。

10. 可以使用 CTE 在查詢上定義游標(biāo)。遞歸 CTE 只允許使用快速只進(jìn)游標(biāo)和靜態(tài)(快照)游標(biāo)。如果在遞歸 CTE 中指定了其他游標(biāo)類型,則該類型將轉(zhuǎn)換為靜態(tài)游標(biāo)類型。

11. 可以在 CTE 中引用遠(yuǎn)程服務(wù)器中的表。如果在 CTE 的遞歸成員中引用了遠(yuǎn)程服務(wù)器,那么將為每個(gè)遠(yuǎn)程表創(chuàng)建一個(gè)假脫機(jī),這樣就可以在本地反復(fù)訪問(wèn)這些表。

下面是一些補(bǔ)充,很多參考價(jià)值

WITH AS短語(yǔ),也叫做子查詢部分(subquery factoring)
可以讓你做很多事情,定義一個(gè)SQL片斷,該SQL片斷會(huì)被整個(gè)SQL語(yǔ)句所用到。
作為提供數(shù)據(jù)的部分。
代碼例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
with temp as
 (select ID, Type_Name, Type_ID
  from T_Base_GoodsType as t
  where t.Shop_ID = @shop_id
   and Type_ID = @Goods_TypeID
 union all
 select t1.ID, t1.Type_Name, t1.Type_ID
  from T_Base_GoodsType as t1
  inner join temp
   on t1.ParentType_ID = temp.Type_ID
  where t1.Shop_ID = @shop_id)
select *
 from (select Stock_Amount,
        S.StockWarn_Amount,
        S.All_Amount,
        G.Goods_ID,
        G.Goods_Name,
        G.Goods_Unit,
        ROW_NUMBER() over(order by Stock_Amount desc) as rowid
     from T_IM_StockInfo as S
     inner join T_Base_GoodsInfo AS G
      on S.Goods_ID = G.Goods_ID
     inner join temp
      on temp.Type_ID = G.Goods_TypeID
     where S.Shop_ID = @shop_id
      AND G.Shop_ID = @shop_id
      and G.Goods_TypeID = temp.Type_ID
     group by S.Stock_Amount,
         S.All_Amount,
         G.Goods_ID,
         G.Goods_Name,
         G.Goods_Unit,
         S.StockWarn_Amount
    HAVING SUM(S.Stock_Amount) < S.StockWarn_Amount) m
 WHERE rowid between @pageindex and @pagesize
sql循環(huán)(WITH AS短語(yǔ)也叫做子查詢部分)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
--表結(jié)構(gòu) SELECT id,position,Parentid FROM op_client_sales_structure
 
WITH TEST_CTE
 AS
 (
 SELECT id,position,Parentid,Cast(Parentid AS NVARCHAR(4000)) AS PATH
 FROM op_client_sales_structure team
 WHERE Parentid !=-1
 UNION ALL
 SELECT a.id,a.position,a.Parentid,
 CTE.PATH+','+Cast(a.Parentid AS NVARCHAR(4000)) AS PATH
 FROM op_client_sales_structure a
 INNER JOIN TEST_CTE CTE ON a.id=CTE.Parentid
)
 SELECT * FROM TEST_CTE WHERE Parentid=(SELECT id FROM op_client_sales_structure WHERE Parentid=-1)
--限制遞歸次數(shù)
 OPTION(MAXRECURSION 10)

這篇文章就介紹到這,希望能幫助到你。
 

相關(guān)文章

IT外包服務(wù)
二維碼 關(guān)閉
主站蜘蛛池模板: 99久久综合精品免费_日本免费A级毛一片_欧美日韩亚洲国产综合_97色伦图片97综合影院_中文字幕免费视频观看_中文字幕a∨在线乱码免费看_亚洲福利_99热蜜臀 | 伊人大杳焦在久久综合网_狠狠爱婷婷_麻豆产精国品免费入口_天干天干天啪啪夜爽爽AV_免费三区_5c5c5c5精品视频在线观看_欧美网站免费_国产a级大片 | 亚洲AV无码AV有码AV_国产精品99蜜臀久久不卡二区_欧美a网站_www.youjizz在线_大伊香蕉精品一区视频在线_亚洲专区在线视频_一二三四在线视频_韩国一级淫片免费看 | 日韩欧美中_A级做爰片_特级无码毛片免费视频播放_国产精品多人P群无码_亚洲XXXX做受欧美_久久人人视频_色爽女少妇_久久精品中文字幕一区二区 | 久久婷婷人人澡人人爽人人喊_亚洲中文欧美日韩在线观看_一本一道波多野结衣一区_青青视频一区_国产精品视频免费一区_在线免费亚洲_国精产品一区一区三区在线观看_日日噜噜夜夜狠狠久久丁香五月 | sifangtv在线视频_久久精品av麻豆的观看方式_国产专区国产AV_国模少妇无码一区二区三区_久久无码专区国产精品S_毛片爱爱_色天天av_亚洲国产69 | 97视频入口_美女夫妻内射潮视频_欧美3p两根一起进高清视频_国产在线不卡_超碰在线最新地址_国产视频只有这里有精品最新_99国产精品99久久久久久粉嫩_成人在线视频国产 | 国产av无码专区亚洲av软件_一级色网站_成人区一区二区_欧美日本一区二区三区在线观看_亚洲大片av_国产精品视频六区_麻豆传媒免费观看_少妇爱做高清免费视频 | 永久av在线免费观看_后入内射国产一区二区_国产xxxxx精品av青椒_国产网红福利视频一区二区_成人福利在线播放_99视频_国产精品一区二区在线观看99_97视频一二区 | 99精品在线看_国产精品黑色蕾丝丁字裤_亚洲国产成人五月综合网_一区二区久久久_福利免费视频_久久青草av_人妻系列无码专区无码中出_芭乐草永久视频在线观看 | 888久久久_亚洲AV无码一区二区三区不卡_国色天香久久精品国产一区_国产黄色拍拍拍网_a毛片成人免费全部播放_久久久精品网站_美女在线观看视频一区二区_任你躁精品一区二区三区 | 日日夜夜香蕉_国产精品美女久久久久av福利_欧美丰满熟妇XXXX_精品一区二卡三卡四卡分类_91网站免费在线观看_爱爱精品_伊人网视频在线观看_66com色麻豆 | 中文字幕日日_无码国产精品一区二区免费式芒果_免费日韩精品_caoporn免费在线视频_最近2019中文免费高清视频观看www99_欧美超逼视频_国产成人激情_dvd女人裸体 | 怡红院成人av_免费在线看无码a_少妇特黄_一级毛片免费视频观看_大香伊蕉在人线国产97_特黄一级免费视频_中文字幕你懂得_日韩在线一 | 亚洲综合一区无码精品_91狼人社区_人人做人人爽国产视_日韩欧美卡一卡二卡新区_91视频成人入口_国内永久福利在线视频图片_在线观看欧美成人_色综合久久综合 | 精品美女一二三区_北条麻纪av无码_日本少妇毛茸茸高潮_国产ts网站_国产激情午夜_超碰人人超碰人人_日韩精品分区_天美一区 一本色道久久综合狠狠躁篇的优点_青青青国产在线视频_欧美大肚子孕妇疯狂作爱视频_一级免费毛片_国产乱人****在线观看_天天射寡妇射视频_麻豆调教_91特黄 | 国产国语性生话播放_亚洲综合日韩欧美_2018高清国产一区二区三区_人与善性猛交xxxx视频_小污女小欲女导航_精品对白一区国产伦_麻豆国产VIDEOFREE高清_bt久久 | 国产精品人成视频免费播放_亚洲欧美一区二区三区_精品中国亚洲_强奷人妻日本中文字幕_免费国产一级_亚洲а∨天堂久久精品喷水_热re91久久精品国99热蜜臀_亚洲成人精品网 | 欧美激情高潮无遮挡_成人无码区免费a片www_成年女人免费视频播放人_2015天堂网_精品一二三区视频_久久久天堂国产精品女人_成人无码潮喷在线观看_亚洲AV永久无码天堂网毛片 | 国产三级精品三级在线专区1_婷婷伊人网_久久av福利_午夜天堂视频_亚洲国产三级在线观看_伊人成人影视_超碰在线免费97_97视频在线观看播放 | 少妇高潮太爽了在线视频_波多野结衣无码视频在线观看_欧美精品momssexxxx_美女被强遭的免费网站视频_久久国产精品视频免费看_亚洲精品高清国产一线久久_高清三区_91综合在线视频 | 久久综合精品国产一区二区三区_av不卡国产在线观看_天天躁日日躁狠狠躁性色AV_水蜜桃aⅴ无码专区_干干干日日日_国产精品成人一区二区不卡_国产一级黄色aaaa片_一区二区免费视频va | 美女高潮久久久_久久久99999_91多人xxx少妇_亚洲精品午睡沙发系列_两个人免费高清视频WWW_国产成人免费视频网站高清观看视频_丝袜一区二区三区_国产成年无码AV新网站 | 久草在线免费福利资源站_欧美黄色特级视频_久久er99热精品一区二区三区_日韩精品视频国产_日韩国产成人无码AV毛片蜜柚_国产精品v欧美精品v日韩精品_久久综合九色综合97婷婷_亚洲一级片大全 | 成年人黄色一级片_99精品国产在热久久_蜜桃在线播放_国产台湾无码av片在线观看_日本aaa大片_国产成人久久AV一区二区_国产成人精品一区二区视频免费_国产69精品久久久久99尤 | 日韩视频免费在线观看_日本毛片高清免费视频_九九亚洲视频_无码精品一区二区三区四区爱奇艺_欧美人与动交ZOZO_第一视角vk_色呦呦久久_动漫被到爽动漫视频免费 | 手机看片福利一区二区三区_日韩做暖暖_精品人妻无码一区二区三区牛牛_无码AV无码天堂资源网_国产人澡人澡澡澡人碰视_国产精品福利一区二区三区_亚洲性受_久久免费看 | 无码H黄肉3D动漫在线观看_午夜网站在线_av之家免费黄片_日本少妇裸体视频_中文字幕欧洲_色久天堂_国产成人欧美一区二区三区八_国产亚洲欧美一级 | 日本不卡的三区四区五区_亚州ava_亚洲乱亚洲乱妇无码_日日操日日摸_日本XXXX色视频在线观看免费,_蜜桃日韩_黄免费观看_www.亚洲一区二区 | 国产精品人成视频免费播放_亚洲欧美一区二区三区_精品中国亚洲_强奷人妻日本中文字幕_免费国产一级_亚洲а∨天堂久久精品喷水_热re91久久精品国99热蜜臀_亚洲成人精品网 | 18勿入网站免费永久_91色综合网_国产欧美在_女人体1963毛片a级_久久久老熟女一区二区三区_亚洲依依成人亚洲社区_激情爱爱网站_中国XXXX真实偷拍 | 精品一二三四视频_天堂8在线天堂资源BT_草操视频_久久www免费人成看片小草_五月婷婷六月丁香欧美综合_精品二区一国产va在线观看_青青草免费观看视频_极品尤物一区二区三区 | 两根一起进三P免费视频_色偷偷偷久久伊人大杳蕉_狠操在线_91成人在线精品视频_在线成人毛片_一级特黄bbbbb免费观看_91怡红院_免费人成网站视频在线观看国内 | 久久婷婷综合缴情亚洲狠狠_久久伦理_欧美日韩视频免费在线观看_欧美国产日韩成人_神天至尊动漫免费观看高清_最近中文字幕在线免费视频_久久久999精品_一级大片免费看 | 成年人视频在线看_欧美久久性视频_超碰aⅴ人人做人人爽欧美_噜噜噜91成人网_亚洲欧美丝袜精品久久_国产精品成人无码A片免费网址_91一二区_91久久久精品国产一区二区蜜臀 | av网站免费在线观看_中文字幕色av一区二区三区不卡_国产精品午睡沙发系列_免费人成在线观看视频播放_亚洲女孩中文字幕免费视频_大地资源免费高清观看_曰曰夜夜的爱_国产av激情无码久久 | 污污网站18禁在线永久免费观看_日本欧美韩国_porno俄罗斯_A毛片终身免费观看网站_中国av免费_午夜A级理论片在线播放_九九在线精品国产_9xfuli福利视频 | 日韩女优一区二区三区_久久久久亚洲AV片无码V_日本国产一区_久久精品国产国产精品四凭_成av免费大片黄在线观看_日韩天堂一区_福利网站视频_国产精品人人妻人人爽久久 | 男人天堂免费_小少妇的粉嫩小泬_www蜜桃视频_国产无遮挡裸露视频免费_成人性生交片无码免费看_国产亚洲自在精品久久_日产日韩在线亚洲欧美_夜夜看人久看2022 | 美女高潮久久久_久久久99999_91多人xxx少妇_亚洲精品午睡沙发系列_两个人免费高清视频WWW_国产成人免费视频网站高清观看视频_丝袜一区二区三区_国产成年无码AV新网站 | 精品一区二区久久久久无码_福利一区二区_日韩精品动漫一区二区三区_中文字幕痴汉一色桃子视频_免费视频久久久久_丰满少妇高潮惨叫久久久一_波多野结衣1区_国产成人理论在线观看视频 |