【问题标题】:"#1054 - Unknown column" error when alias is used with-in the query?在查询中使用别名时出现“#1054 - 未知列”错误?
【发布时间】:2011-12-08 17:56:04
【问题描述】:

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

#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

【问题讨论】:

  • 你能描述一下短信和用户表吗?

标签: mysql mysql-error-1054


【解决方案1】:

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

你可以这样做:

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

您可以在 GROUP BY、ORDER BY 或 HAVING 子句中使用别名来引用列

【讨论】:

  • 仍然是完全相同的错误! (Pl. Nt.:我按原样复制粘贴了您的查询)
  • 对不起@Tajar,我忘了删除内部查询中的plus-minus。立即尝试。
  • 谢谢!很有帮助...学到了一些新的东西,这是一次又一次的需要!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 2012-03-09
  • 2017-03-17
  • 1970-01-01
  • 2015-07-05
  • 2016-02-29
相关资源
最近更新 更多