mysql - mysql中的子查询问题

标签 mysql subquery

我正在尝试获取过去 n 个月内唯一球员的前 3 名得分。当我尝试执行查询时出现错误:

“where 子句”中的未知列“f.SC_Date”

下面是我的查询

SELECT * from   scores f
WHERE
  SC_Id IN (
          SELECT SC_Id FROM (
                  SELECT SC_Id from scores where DATE_FORMAT( SC_Date, "%Y%m" ) = DATE_FORMAT( f.SC_Date, "%Y%m" ) AND US_Id != 0  ORDER BY SC_Score DESC 
                   LIMIT 3
          ) AS u )ORDER BY DATE_FORMAT( SC_Date, "%Y%m" ) DESC, SC_Score DESC

最佳答案

你不能像那样在内部查询中使用 f.SC_Date - 记住括号中的位将首先运行,然后在结果上运行外面的位。

您需要在该 select 语句中声明 scores f 才能工作。

我希望你根本不需要它 - 就像:

SELECT * from   scores f
WHERE
  SC_Id IN (
          SELECT SC_Id FROM (
                  SELECT SC_Id from scores where DATE_FORMAT( SC_Date, "%Y%m" ) = DATE_FORMAT( SC_Date, "%Y%m" ) AND US_Id != 0  ORDER BY SC_Score DESC 
                   LIMIT 3
          ) AS u )ORDER BY DATE_FORMAT( SC_Date, "%Y%m" ) DESC, SC_Score DESC

应该可以,除非我误会了您的意图。

关于mysql - mysql中的子查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175654/

相关文章:

java - MySQL utf-8 与 json 的问题

PHP 在页面刷新时重新为 MYSQL 添加值

sql - 在子查询中使用主查询中的列

mysql - 如何避免mysql存储过程中的IN(Select...)子查询

php - 将两个循环转换为 smarty

php - 数据库设计模式帮助 2 个实体

sql - 带有 GROUP BY 和零条目的 MySQL COUNT

mysql - 从子子查询中引用父查询中的表

mysql - 在 mySQL 的嵌套子查询中选择多列的推荐方法

Mysql - 从嵌套子查询引用外部字段