# Simple Question: How to merge SQL results?

**URL:** <https://www.ruby-forum.com/t/simple-question-how-to-merge-sql-results/58386>\
**Category:** Rails\
**Created:** [April 21, 2006, 2:10am UTC](https://www.ruby-forum.com/t/simple-question-how-to-merge-sql-results/58386 "2006-04-21T02:10:24Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![danhobbs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a5b964/32.png) [@danhobbs](https://www.ruby-forum.com/u/danhobbs)\
**Post date:** [April 21, 2006, 2:10am UTC](https://www.ruby-forum.com/t/simple-question-how-to-merge-sql-results/58386/1 "2006-04-21T02:10:24Z")

</div>

Hopefully an easy one, how do I merge two or more SQL query results?

Example:  
result1 = find\_by\_sql(x)  
result2 = find\_by\_sql(y)

What is the best way to merge result1 and result2? I want to be able  
to reference the objects as if they were obtained via one query.

Cheers,  
Dan

---

<div class="post-metadata">

**Author:** ![danhobbs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a5b964/32.png) [@danhobbs](https://www.ruby-forum.com/u/danhobbs)\
**Post date:** [April 21, 2006, 2:28am UTC](https://www.ruby-forum.com/t/simple-question-how-to-merge-sql-results/58386/2 "2006-04-21T02:28:39Z")

</div>

On 4/20/06, Dan H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hopefully an easy one, how do I merge two or more SQL query results?
> 
> Example:  
> result1 = find\_by\_sql(x)  
> result2 = find\_by\_sql(y)
> 
> What is the best way to merge result1 and result2? I want to be able  
> to reference the objects as if they were obtained via one query.

The results are just arrays, so you can just do:

resultset = result1 + result2

---

<div class="post-metadata">

**Author:** ![danhobbs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a5b964/32.png) [@danhobbs](https://www.ruby-forum.com/u/danhobbs)\
**Post date:** [April 21, 2006, 2:31am UTC](https://www.ruby-forum.com/t/simple-question-how-to-merge-sql-results/58386/3 "2006-04-21T02:31:40Z")

</div>

This _should_ work:

result = find\_by\_sql(x)  
result.concat find\_by\_sql(y)

–  
– Tom M.

---

<div class="post-metadata">

**Author:** ![danhobbs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a5b964/32.png) [@danhobbs](https://www.ruby-forum.com/u/danhobbs)\
**Post date:** [April 21, 2006, 6:51am UTC](https://www.ruby-forum.com/t/simple-question-how-to-merge-sql-results/58386/4 "2006-04-21T06:51:15Z")

</div>

You could also use a UNION caluse in your SQL

---

<div class="post-metadata">

**Author:** ![danhobbs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a5b964/32.png) [@danhobbs](https://www.ruby-forum.com/u/danhobbs)\
**Post date:** [April 21, 2006, 7:46am UTC](https://www.ruby-forum.com/t/simple-question-how-to-merge-sql-results/58386/5 "2006-04-21T07:46:38Z")

</div>

Perfect, this works a treat.

I can then even chuck a result.uniq on the return statement to  
eliminate duplicate records in the result. Ruby is so beautiful it  
brings a tear to the eye…

Thanks for the tip,  
Dan

---

<div class="post-metadata">

**Author:** ![danhobbs](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/a5b964/32.png) [@danhobbs](https://www.ruby-forum.com/u/danhobbs)\
**Post date:** [April 21, 2006, 9:59am UTC](https://www.ruby-forum.com/t/simple-question-how-to-merge-sql-results/58386/6 "2006-04-21T09:59:52Z")

</div>

One more way :

```
  result = []
  result << find_by_sql(x)
  result << find_by_sql(y)
  result << find_by_sql(z)
  return result.flatten.uniq

```

Alain
