#include <unordered_map>
using namespace std;

vector<vector<int>> leftJoin(vector<vector<int>>& table1, vector<vector<int>>& table2){
    unordered_map<int, vector<vector<int>>> hashTable;
    vector<vector<int>> result;
    
    // 遍历table2,将每个键值对应的记录放入哈希表中
    for(auto record : table2){
        int key = record[0];
        if(hashTable.find(key) == hashTable.end()){
            hashTable[key] = vector<vector<int>>{record};
        }
        else{
            hashTable[key].push_back(record);
        }
    }
    
    // 遍历table1,找到每个键值对应的记录,并与table1的记录进行合并
    for(auto record : table1){
        int key = record[0];
        if(hashTable.find(key) != hashTable.end()){
            for(auto record2 : hashTable[key]){
                result.push_back({key, record[1], record2[1]});
            }
        }
    }
    
    return result;
}
两表进行左连接,两表各选择前两列作为键值,使用哈希表,重新生成对应C++代码

原文地址: https://www.cveoy.top/t/topic/vRu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录