I recommend using `Pick` for these things. It has already been used by others but the simplest form using [`Alternatives`](http://reference.wolfram.com/mathematica/ref/Alternatives.html) hasn't been shown:
Pick[#, #[[All, 1]], Alternatives @@ #2] &[mymatrix, compvector]
> {{1, 1, -56}, {1, 2, 3.06}, {2, 0, -30.02}, {6, 1, 9.945}, {7, 0, -7.512}}
For greater speed especially with longer *comvectors* we can use a [`Dispatch`](http://reference.wolfram.com/mathematica/ref/Dispatch.html) table:
fast[m_, c_] := Pick[m, m[[All, 1]] /. Dispatch @ Thread[c -> True]]
fast[mymatrix, compvector]
> {{1, 1, -56}, {1, 2, 3.06}, {2, 0, -30.02}, {6, 1, 9.945}, {7, 0, -7.512}}
Timings with some larger data:
mymatrix = RandomInteger[9999, {50000, 3}];
compvector = RandomChoice[Range@9999, 150];
(* the faster of Michael's functions *)
michael[m_, c_] := With[{nf = Nearest[c]},
Pick[m, # - First /@ nf /@ # &@m[[All, 1]], 0]
]
Cases[mymatrix, {x_, _, _} /; MemberQ[compvector, x]] // Timing // First
Pick[#, #[[All, 1]], Alternatives @@ #2] &[mymatrix, compvector] // Timing // First
michael[mymatrix, compvector] // Timing // First
fast[mymatrix, compvector] // Timing // First
> 3.447
>
> 0.905
>
> 0.265
>
> 0.047
A run-off with Michael's method on even larger data:
mymatrix = RandomInteger[99999, {500000, 3}];
compvector = RandomChoice[Range@99999, 15000];
michael[mymatrix, compvector] // Timing // First
fast[mymatrix, compvector] // Timing // First
> 15.943
>
> 0.327