【问题标题】:How to select a column from a subquery in sql?如何从sql中的子查询中选择一列?
【发布时间】:2021-09-01 19:46:52
【问题描述】:

我是 sql 的新手。 我有这张桌子。

第一个我想选择每门课程有多少学生;

SELECT COURSE_ID,COUNT(COURSE_ID) AS C FROM STUDENT GROUP BY COURSE_ID

2ND 现在我想从子查询中选择 MAX(C),它是 count 列中的最大值。

所以

SELECT MAX(C) FROM (  SELECT COURSE_ID,COUNT(COURSE_ID) AS C FROM STUDENT GROUP BY COURSE_ID   );

输出应该是 3

这是正确的方法吗? 我正在使用 MARIADB。

【问题讨论】:

  • 听起来很合理,它是否产生了您期望的结果?
  • @ArSeN 不,它不起作用。
  • 当子查询用作派生表时(例如,使用 FROM 或 JOIN),您需要给它一个别名,例如 FROM (SELECT foo FROM bar) AS foo_bar;
  • 总是很重要地说如何有些东西不工作
  • @ysth 谢谢,在给出别名后我得到了输出。

标签: mysql sql mariadb rdbms


【解决方案1】:

您可以使用ORDER BYLIMIT 完全避免子查询:

SELECT COUNT(*) AS C
FROM STUDENT
GROUP BY COURSE_ID
ORDER BY C DESC
LIMIT 1;

【讨论】:

  • “LIMIT 1”只显示降序排列后的第一行?
  • 它将为您提供最大计数,因为它是该顺序中的第一个
猜你喜欢
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多