让我说我有
(def test-left
[{:name "Sean" :age 27}
{:name "Ross" :age 27}
{:name "Brian" :age 22}])
和
(def test-right
[{:owner "Sean" :item "Beer"}
{:owner "Sean" :item "Pizza"}
{:owner "Ross" :item "Computer"}
{:owner "Matt" :item "Bike"}])
当我做(clojure.set/join test-left test-right)
时,我会得到笛卡尔积。 12排。我想要的是内连接:左边的名字=:右边的所有者,这样我只得到那些在右边有匹配行的结果
所以我得到
[{:name "Sean" :age 27 :item “Beer” }
{:name "Sean" :age 27 :item “Pizza” }
{:name "Ross" :age 27 :item “Computer”}]
任何想法。同样想要实现左右外连接,但那是separete问题。我正在学习clojure所以请耐心等待我
答案 0 :(得分:9)
知道了。我的坏了
1:24 main-hta=> (clojure.set/join test-left test-right {:name :owner})
得
#{{:item "Pizza", :owner "Sean", :name "Sean", :age 27} {:item "Beer", :owner "Sean", :name "Sean", :age 27} {:item "Computer", :owner "Ross", :name "Ross", :ag
e 27}}