久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

T-SQL 左連接不返回空列

T-SQL left join not returning null columns(T-SQL 左連接不返回空列)
本文介紹了T-SQL 左連接不返回空列的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我在 T-SQL 中有 2 個(gè)表,一個(gè)有 10 條記錄,一個(gè)有 11 條記錄.

I have 2 tables in T-SQL one with 10 records and one with 11.

select tbl.unit, tbl2.unid 
from tbl1
left join tbl2 on tbl2.UNID = tbl1.UNIT
where tbl2.Status = 'Main'
group by unit, UNID

當(dāng) tbl1 有 11 條記錄時(shí),這只會(huì)返回 10 條記錄.我期待缺失的記錄顯示一個(gè)值,如果 UNIT 但 UNID 為空,但不存在.

This only returns 10 records when tbl1 has 11 records. I was expecting the missing record to show a value if UNIT but null for UNID but is just is not there.

我不明白為什么會(huì)這樣

推薦答案

那么為什么 LEFT JOIN 不顯示聯(lián)接左側(cè)的所有記錄.

So why would a LEFT JOIN not show all the records from a left side of the join.

是bug嗎?

很可能不會(huì).

讓我們看一個(gè)簡化的例子.

Lets look at a simplified example.

表A有3條記錄.

ID    ColA
1     Foo
2     Bar
3     Buzz

TableB 有 2 條記錄

TableB has 2 records

ID    ColB
4     Foo
5     Bar

ColA 上的 INNER JOINColB 將返回 2 條記錄.
只有找到匹配項(xiàng)的那些.

An INNER JOIN on ColA & ColB would return 2 records.
Only those where a match is found.

SELECT ColA, ColB 
FROM TableA a
JOIN TableB b ON b.ColB = a.ColA

返回:

ColA    ColB
Foo     Foo
Bar     Bar

LEFT JOIN 將返回 3 條記錄.
右側(cè)帶有 NULL 表示不匹配.

A LEFT JOIN would return 3 records.
With a NULL on the right side for the unmatched.

SELECT ColA, ColB 
FROM TableA a
LEFT JOIN TableB b ON b.ColB = a.ColA

返回:

ColA    ColB
Foo     Foo
Bar     Bar
Buzz    null

但是如果在右側(cè)的 WHERE 子句中使用了條件會(huì)怎樣?

But what happens if a criteria is used in the WHERE clause for the right side?

SELECT ColA, ColB 
FROM TableA a
LEFT JOIN TableB b ON b.ColB = a.ColA
WHERE b.ColB IN ('Foo', 'Bar', 'Buzz')

返回:

ColA    ColB
Foo     Foo
Bar     Bar

什么?嗡嗡聲"在哪里?

What? Where's the 'Buzz'?

你能猜到為什么 LEFT JOIN 看起來像一個(gè) INNER JOIN 嗎?

Can you guess why that LEFT JOIN seems to behave like an INNER JOIN?

解決方案是將此類標(biāo)準(zhǔn)放在ON 子句中.

The solution is to put such criteria in the ON clause.

SELECT ColA, ColB 
FROM TableA a
LEFT JOIN TableB b 
   ON b.ColB = a.ColA AND b.ColB IN ('Foo', 'Bar', 'Buzz')

或者把條件放在WHERE中,但也允許NULL.

Or do put the criteria in the WHERE, but also allow NULL.

SELECT ColA, ColB 
FROM TableA a
LEFT JOIN TableB b 
   ON b.ColB = a.ColA
WHERE (b.ColB IN ('Foo', 'Bar', 'Buzz') 
       OR b.ColB IS NULL)

返回:

ColA    ColB
Foo     Foo
Bar     Bar
Buzz    null

現(xiàn)在嗡嗡聲又回來了.

這篇關(guān)于T-SQL 左連接不返回空列的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Modify Existing decimal places info(修改現(xiàn)有小數(shù)位信息)
The correlation name #39;CONVERT#39; is specified multiple times(多次指定相關(guān)名稱“CONVERT)
remove duplicates from comma or pipeline operator string(從逗號(hào)或管道運(yùn)算符字符串中刪除重復(fù)項(xiàng))
Change an iterative query to a relational set-based query(將迭代查詢更改為基于關(guān)系集的查詢)
concatenate a zero onto sql server select value shows 4 digits still and not 5(將零連接到 sql server 選擇值仍然顯示 4 位而不是 5)
SQL to display both month and year between two dates(SQL 顯示兩個(gè)日期之間的月份和年份)
主站蜘蛛池模板: 激情婷婷成人 | 最近最新中文字幕 | 高清一区二区三区 | 99re视频这里只有精品 | 欧美国产视频一区二区 | 午夜合集 | 四虎海外| 亚洲a一区 | 久久综合久色欧美综合狠狠 | a久久久久久 | 嫩草视频在线免费观看 | 久久综合一区 | 天堂网色| 欧美最猛性xxxxx亚洲精品 | 一级免费毛片 | 欧美精品在线一区二区三区 | 久久久久久黄 | 成人字幕网zmw | 久久99这里只有精品 | 午夜影视| 久久9精品 | 国产成人精品一区二区 | av色噜噜| 性欧美精品一区二区三区在线播放 | 一区二区视频在线 | 视频在线观看一区 | 一区二区三区欧美 | 国产欧美日韩在线一区 | 欧美亚洲另类丝袜综合网动图 | 777zyz色资源站在线观看 | xxx视频| 亚洲国产一区二区三区 | 成人av网页 | 黄色一级视频 | 日韩一区二区三区视频在线观看 | 97超碰在线播放 | 国产精品一区二区视频 | 亚洲一区二区中文字幕 | 人人看人人搞 | 亚洲精品一区二区三区丝袜 | 九九免费在线视频 |