首页 > 解决方案 > 从另一个表中检索数据时,如果不使用 EXISTS 引入子查询,则选择列表中只能指定一个表达式

问题描述

以下是:SQL order by not allowed in subquery

现在我想从用户表中检索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)

为什么我会收到错误消息?

标签: sql

解决方案


我不知道你为什么会收到这个错误。您有一个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;

推荐阅读