簡體   English   中英

在Python中實現合並聯接

[英]Implementing Merge Join in Python

我對SQL中的JOIN操作很熟悉,但是我並不真正了解它們在內部如何工作。

我被賦予在Python中實現merge_join函數的任務。 我已經正確實現了嵌套循環聯接:

def nested_loop_join(self, outer, outer_join_index, inner, inner_join_index):
    inner_list = list(inner)
    for outer_row in outer:
        for inner_row in inner_list:
            if outer_row[outer_join_index] == inner_row[inner_join_index]:
                yield outer_row + inner_row

我的合並聯接是:

def merge_join(self, outer, outer_join_index, inner, inner_join_index):
    inner_list = list(inner)
    for outer_row in outer:
        for inner_row in inner_list:
            if outer_row[outer_join_index]==inner_row[inner_join_index]:
                yield outer_row+inner_row
            else:
                yield outer_row

但這似乎不起作用。 據我了解,不應該合並聯接就像將內部表附加到外部一樣嗎? 我在這里做錯了什么?

據推測,您指的是稱為合並連接的算法,而不是稱為merge的SQL命令(后者同時進行插入和更新)。

合並聯接算法采用兩個排序的記錄列表。 當鍵相同時,它將產生兩個記錄的值的笛卡爾積。 如果任一輸入的鍵值不在另一輸入中,則該鍵不在輸出中。

我不會編寫執行此操作的Python代碼。 但是,如果您了解算法的作用,那么轉換為Python應該非常簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM