mysql - 在查询中使用别名时出现 "#1054 - Unknown column"错误?

标签 mysql mysql-error-1054

在使用以下查询时, 我得到错误

#1054 - Unknown column 'plus' in 'field list'

当使用 plus-minus 时。否则,查询运行正常。我猜有些东西与别名有关,但我不知道如何使用。请指导!

谢谢。

查询:

SELECT users.name,
count(*) as total, 
SUM(sms.views)+ SUM(sms.downloads)+ (SELECT count(*) FROM `smsfb` WHERE (`feedback`=1 OR `feedback`=100) AND userid=users.uniqueID) AS plus,
SUM(sms.delreq)+(SELECT count(*) FROM `smsfb` WHERE (`feedback`=5 OR `feedback`=6) AND userid=users.uniqueID) AS minus,
plus-minus
FROM sms,users
WHERE sms.deviceID=users.uniqueID AND sms.catid!=23 AND sms.catid!=44 AND sms.catid!=45
AND date>="2011-10-03" AND date<"2011-10-09" 
GROUP BY users.uniqueID HAVING total>10 ORDER BY total DESC LIMIT 0, 10

最佳答案

您不能在查询的选择部分中使用列的别名。

你可以这样做:

SELECT name
     , total
     , plus
     , minus
     , plus - minus
 FROM (
    SELECT users.name,
    count(*) as total, 
    SUM(sms.views)+ SUM(sms.downloads)+ (SELECT count(*) FROM `smsfb` WHERE     (`feedback`=1 OR     `feedback`=100) AND userid=users.uniqueID) AS plus,
    SUM(sms.delreq)+(SELECT count(*) FROM `smsfb` WHERE (`feedback`=5 OR `feedback`=6)     AND     userid=users.uniqueID) AS minus
    FROM sms,users
    WHERE sms.deviceID=users.uniqueID
      AND sms.catid!=23 AND sms.catid!=44
      AND sms.catid!=45
      AND date>="2011-10-03" AND date<"2011-10-09" 
    GROUP BY users.uniqueID HAVING total>10 ORDER BY total DESC
    LIMIT 0, 10
 ) plusAndMinus

来自 Problems with Column Aliases :

You can use the alias in GROUP BY, ORDER BY, or HAVING clauses to refer to the column

关于mysql - 在查询中使用别名时出现 "#1054 - Unknown column"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7784815/

相关文章:

mysql - Node.js,插入后未显示在列表查询中

mysql - MySQL表数据输入格式

当在查询中包含子查询时,MySQL 将 CPU 推至 100%

字段列表中的mysql未知列

包含 group_concat 的 mysql select 语句

mysql - 如何在一个 SELECT 中计算不同组值的行

mysql - #1054 - 'field list' 中的未知列减号是 MySQL 中的特殊字符吗?

mysql - 错误 1054。Insert 子句中的未知列

php - cakephp 从另一个表中检索数据到 Controller 中

PHP MySQL 列无效