SQL:如果在其他地方存在列,则将行放在查询的顶部

SQL:如果在其他地方存在列,则将行放在查询的顶部,sql,sql-server,database,user-interface,Sql,Sql Server,Database,User Interface,我有一个表中的行,多个用户将查看。用户可以“收藏”一行,这会将用户名/行键添加到单独的表中 我想做一个查询,将“收藏夹”排序到顶部。我假设这需要一个子查询,但我不确定最好的方法是什么 我的一个想法是在收藏夹中查询我的表,然后将所有内容合并到收藏夹中不存在的查询中。但是我想知道是否有更好的方法。您可能想要这样的东西: select t.* from t left join favorites f on t.pk = f.pk and f.userid = @userid ord

我有一个表中的行,多个用户将查看。用户可以“收藏”一行,这会将用户名/行键添加到单独的表中

我想做一个查询,将“收藏夹”排序到顶部。我假设这需要一个子查询,但我不确定最好的方法是什么


我的一个想法是在收藏夹中查询我的表,然后将所有内容合并到收藏夹中不存在的查询中。但是我想知道是否有更好的方法。

您可能想要这样的东西:

select t.*
from t left join
     favorites f
     on t.pk = f.pk and f.userid = @userid
order by (case when f.pk is not null then 1 else 2 end);

pk
是原始表的主键,用于唯一标识每一行。

连接到单独的表,然后按此喜爱的行排序。预期输出很难给你代码。。。