表A(沒有什麼是獨特的)如何合併兩個SQL表,其中B是A的子集,並且應該重寫A?
╔══════╦══════╦═══════════╦═══════════════╗
║ p_id ║ l_id ║ p_name ║ p_description ║
╠══════╬══════╬═══════════╬═══════════════╣
║ 212 ║ 1 ║ Ball ║ Red ║
║ 212 ║ 2 ║ Balle ║ Rouge ║
║ 301 ║ 1 ║ Horn name ║ Blue ║
╚══════╩══════╩═══════════╩═══════════════╝
表B(P_ID是唯一的)
╔══════╗
║ p_id ║
╠══════╣
║ 101 ║
║ 201 ║
║ 210 ║
║ 212 ║
║ 234 ║
║ 250 ║
║ 301 ║
║ 320 ║
╚══════╝
WRT P_ID,表A是表B(所有P_ID應在表B中存在的話)的一個子集但表A包含不同的數據。這兩個表格都包含更多不顯示的列。對於表A,我只關心p_id。對於表B,我想根據l_id消除重複項。總會有一個l_id爲1的條目,但可能有或者可能沒有應該被丟棄的條目(例如,一個簡單的WHERE l_id = 1應該這樣做)。
的結果應該是有表A行的大多數的每列將在與其他列中沒有數據表B(一次)的每一個的p_id表,因爲他們沒有在表中存在B.所以我應該有這種情況,例如:
╔══════╦══════╦═══════════╦═══════════════╗
║ p_id ║ l_id ║ p_name ║ p_description ║
╠══════╬══════╬═══════════╬═══════════════╣
║ 101 ║ ║ ║ ║
║ 201 ║ ║ ║ ║
║ 210 ║ ║ ║ ║
║ 212 ║ 1 ║ Ball ║ Red ║
║ 234 ║ ║ ║ ║
║ 250 ║ ║ ║ ║
║ 301 ║ 1 ║ Horn name ║ Blue ║
║ 320 ║ ║ ║ ║
╚══════╩══════╩═══════════╩═══════════════╝
我覺得你的代碼的輸出將只是2行,而他需要8行。 **編輯:**你的情況是'b.p_id = a.p_id和a.l_id = 1',那我想是的。 –
@stack。 。 。你爲什麼那麼想?它會返回'b'中的所有行,我認爲其中有八個。 –
我知道你是正確的*(代表你的代表人數)*,但我不知道爲什麼?!看,當你使用'join'時,'on'有一個條件。現在只有兩行在你的情況下是真的。讓我問一件事。發生了什麼如果我在連接中改變'a'和'b'的位置?!像這樣:'從左連接b' –