午夜精品久久久久久久99老熟妇,天堂中文www官网,未满十八18勿进黄网站,太粗太深了太紧太爽了,天天爽夜夜爽夜夜爽

考試報名
考試報名
考試內(nèi)容
考試大綱
在線客服
返回頂部

備考刷題,請到

CDA認證小程序

表A(key,v1),表B(key,v2),其中連接的公共字段key。假設A為左表,在MySQL語言中能實現(xiàn)如圖涂色部分查詢的是( )
A. select * from A full join B using(key);
B. select * from A left join B using(key) union select * from B right join B using(key);
C. select * from A left join B on A.key=B.key where B.key is null union select * from A right join B on A.key=B.key where A.key is null;
D. select * from A left join B using(key) union all select * from B right join B using(key);
上一題
下一題
收藏
點贊
評論
題目解析
題目評論(0)

難度大。先查出左反連接和右反連接,再對兩張寬表進行縱向連接。select * from A left join B on A.key=B.key where B.key is null是左反連接,select * from A right join B on A.key=B.key where A.key is null是右反連接。

正確答案是:C

專業(yè)分析:

題目要求查詢的結(jié)果是圖中涂色部分,即需要找出左表A和右表B中不匹配的記錄。具體來說,這包括以下兩部分:

1. 左表A中有而右表B中沒有的記錄。
2. 右表B中有而左表A中沒有的記錄。

選項C的SQL語句如下:
```sql
select * from A left join B on A.key = B.key where B.key is null
union
select * from A right join B on A.key = B.key where A.key is null;
```

分析這段SQL語句:

1. `select * from A left join B on A.key = B.key where B.key is null`:
- 這部分查詢找出了左表A中有但右表B中沒有匹配記錄的所有記錄。通過`left join`,即使B表中沒有匹配的記錄,A表中的記錄也會出現(xiàn)在結(jié)果集中。`where B.key is null`條件確保了只選取那些在B表中沒有匹配記錄的A表記錄。

2. `select * from A right join B on A.key = B.key where A.key is null`:
- 這部分查詢找出了右表B中有但左表A中沒有匹配記錄的所有記錄。通過`right join`,即使A表中沒有匹配的記錄,B表中的記錄也會出現(xiàn)在結(jié)果集中。`where A.key is null`條件確保了只選取那些在A表中沒有匹配記錄的B表記錄。

通過`union`操作將這兩部分結(jié)果合并起來,就得到了所有不匹配的記錄。

其他選項分析:
- A: `select * from A full join B using(key);`:
- `full join`會返回A和B中所有匹配和不匹配的記錄,而不僅僅是不匹配的記錄,因此不符合要求。

- B: `select * from A left join B using(key) union select * from B right join B using(key);`
- 這里的`right join B using(key)`是錯誤的,應該是`right join A using(key)`。即使修正了,`union`操作也會去重,結(jié)果可能包含重復的記錄。

- D: `select * from A left join B using(key) union all select * from B right join B using(key);`
- 同樣地,`right join B using(key)`是錯誤的,應該是`right join A using(key)`。即使修正了,`union all`會包含重復的記錄,不符合題意。

綜上所述,選項C是唯一正確的答案。