mysql - 在子查询中使用主查询中的列时出错

标签 mysql select

我不是 mysql 的高级用户,所以您必须多多包涵。

我试图在其中一个子查询中使用 cref 变量,但我收到一个错误,指出 cref 列不存在。如果我取出子查询,它将显示该列,因此该列肯定存在。

如果还有其他错误,请多多指教:)

SELECT DISTINCT
  (contractorsRef) AS cref,
  RIDGROUP AS ridg,
  (
    SELECT count(*) FROM (
      SELECT DISTINCT subcontractorRef
      FROM request
      INNER JOIN request_config
        ON request_config.RIDGROUP = request.RIDGROUP
      WHERE request_config.contractorsRef = cref  --### ERROR HERE
        AND currenttaxyear =2011
        AND weekno =31
  ) AS xx
) as xxx
FROM request_config
WHERE currenttaxyear =2011
  AND weekno =32
  AND contractorsRef <>132

最佳答案

试试这个(请注意,我在外部选择中将 request_config 标记为 outer_config 并且我在内部选择中使用标签限定了引用

SELECT DISTINCT (contractorsRef) AS cref, RIDGROUP AS ridg, 
    (select count(DISTINCT subcontractorRef)
    FROM request
    INNER JOIN request_config ON request_config.RIDGROUP = request.RIDGROUP
    WHERE request_config.contractorsRef = outer_config.contractorsRef 
    AND currenttaxyear =2011
    AND weekno =31) AS xxx
FROM request_config outer_config
WHERE currenttaxyear =2011
AND weekno =32
AND contractorsRef <>132

编辑 请再试一次,我从子选择中删除了 1 个不必要的层

关于mysql - 在子查询中使用主查询中的列时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8097288/

相关文章:

mysql - 如何从 mysql 表创建期间日期范围,将列中的每个公共(public)值序列分组

mysql - 获得4次的中间范围

mysql - 选择特朗普今日记录.time()

sql - 在 SQL 中合并来自相同表的列

java - 为什么从 MYSQL 更新时出现语法错误?

php - 查找具有最多行 MYSQL 的范围

PHP 旧数据在 POST 后仍然显示

php - 如何从 MySQL (PHP) 检索特定值

使用自引用查询更新 mysql

SQL Server - 创建自定义自增字段