join
类似于 SQL 中的 join
操作:它对 xrel
和 yrel
做关联操作。
xrel
和 yrel
是两个序列,序列的每个成员都是一个 map
, map
的每个 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}}