从另一个表检索数据时,如果子查询未引入exists,则只能在选择列表中指定一个表达式

oxalkeyp  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(210)

如下:子查询中不允许sql order by
现在我要找回 userid 以及 username 从用户表。我就是这么做的:

select * from user where user.username in (select top 30
  username,
  count(*) as n_plays
from plays
group by username
order by n_plays desc)

为什么我会出错?

tp5buhyn

tp5buhyn1#

我不知道你为什么会犯那个错误。你有一个 in 应返回一列但返回两列的子查询。替代用途 join :

select u.*
from user u join
     (select top 30 username, count(*) as n_plays
      from plays p
      group by p.username
      order by count(*) desc
     ) pu
     on pu.username = u.username;

相关问题