So say I have a database with the following columns: `song_name`, `artist`, and `album` 

In `groupA` I want to pull all of the records and in `groupB` I want to pull all of the records, but only the `song_name` and `artist` columns. 

This would give me something like:

```
groupA = Music.select("id, song_name, artist, album").uniq{ |e| [e.song_name, e.artist] }
groupB = Music.select("id, song_name, artist").uniq{ |e| [e.song_name, e.artist] }

```

`groupA` results: 

```
  [
      [0] #<Music:0x007fc18a74b348> {
                   :id => "1",
            :song_name => "Angie",
               :artist => "The Rolling Stones",
                :album => "Made In the Shade",
      },
      [1] #<Music:0x007fc18a0e1d90> {
                   :id => "2",
            :song_name => "Beast of Burden",
               :artist => "The Rolling Stones",
                :album => "Some Girls",
      },
      [2] #<Music:0x007fc18a0e14f8> {
                   :id => "3",
            :song_name => "Angie",
               :artist => "The Rolling Stones",
                :album => "Goats Head Soup",
      }
  ]

```

`groupB` results: 

```
  [
      [0] #<Music:0x007fc18a74b348> {
                   :id => "1",
            :song_name => "Angie",
               :artist => "The Rolling Stones",
      },
      [1] #<Music:0x007fc18a0e1d90> {
                   :id => "2",
            :song_name => "Beast of Burden",
               :artist => "The Rolling Stones",
      }
  ]

```

What I want to be able to do is delete groupB from groupA and only have the differences remaining. Something like:

`groupA` - `groupB` = `groupC`: 

```
  [
      [2] #<Music:0x007fc18a0e14f8> {
                   :id => "3",
            :song_name => "Angie",
               :artist => "The Rolling Stones",
                :album => "Goats Head Soup",
      }
  ]

```

The other big concern is speed, there may be hundreds of thousands of records returned so ideally, the solution would be the least costly method.