Can I use tags to merge changes from a branch to the trunk like with CVS?

Yes, it is possible to merge from a branch to the trunk without remembering one revision number, as shown below.

The example presumes an existing repository in /home/repos in which you want to start a branch named bar containing a file named foo that you are going to edit. For the purpose of tracing branch merges, this repository has set up tags/branch_traces/ to keep tags.
# setup branch and tags $ svn copy file:///home/repos/trunk \
* file:///home/repos/branches/bar_branch \ -m "start of bar branch" 
$ svn copy file:///home/repos/branches/bar_branch \
* file:///home/repos/tags/branch_traces/bar_last_merge \ -m "start" 
# checkout branch working copy $ svn checkout file:///home/repos/branches/bar_branch wc $ cd wc
# edit foo.txt file and commit $ echo "some text" >>foo.txt $ svn commit -m "edited foo"
# switch to trunk and merge changes from branch $ svn switch 
        file:///home/repos/trunk $ svn merge 
        file:///home/repos/tags/branch_traces/bar_last_merge \
* file:///home/repos/branches/bar_branch 
# Now check the file content of 'foo.txt', it should contain the changes.
# commit the merge $ svn commit -m "Merge change X from bar_branch."
# finally, update the trace branch to reflect the new state of things 
        $ svn delete -m "Remove old trace branch in preparation for refresh." \
* file:///home/repos/tags/branch_traces/bar_last_merge 
$ svn copy file:///home/repos/branches/bar_branch \
* file:///home/repos/tags/branch_traces/bar_last_merge \ -m "Reflect merge of change X."

You can also do this in the opposite direction, which is not shown in the example.