join

(join xrel yrel)
(join xrel yrel km)

join 类似于 SQL 中的 join 操作:它对 xrelyrel 做关联操作。

xrelyrel 是两个序列,序列的每个成员都是一个 mapmap 的每个 key-value 对可以看做数据库表的字段以及对应的值。

如果提供了 km 参数,则按照 km 所列出的 key 进行关联。

查看源码

user> (use 'clojure.set)
nil

;; 处理 set

user> (def students             ;; 学生信息
        #{{:id 1 :name "Li Lei"}
          {:id 2 :name "Han Meimei"}})
#'user/students

user> (def score                ;; 学生成绩
        #{{:id 1 :score 60}
          {:id 2 :score 99}})
#'user/score

user> (join students score)     ;; 关联信息和成绩
#{{:score 99, :name "Han Meimei", :id 2}
  {:score 60, :name "Li Lei", :id 1}}

;; 处理 vector

user> (def score-vec
         [{:id 1 :score 60}
          {:id 2 :score 99}])
#'user/score

user> (join students score-vec)
#{{:score 99, :name "Han Meimei", :id 2}
  {:score 60, :name "Li Lei", :id 1}}

讨论

comments powered by Disqus

Previous topic

intersection

Next topic

map-invert