当前位置: 首页 > 面试题库 >

在MySQL中过滤别名

顾泰平
2023-03-14
问题内容

为什么以下查询不起作用?Mysql抱怨z-我不能在WHERE子句中使用别名吗?

SELECT x + y AS z, t.*  FROM t
WHERE 
x = 1 and
z = 2

我得到的错误是:

Error Code : 1054
Unknown column 'z' in 'where clause'

问题答案:

http://dev.mysql.com/doc/refman/5.0/en/problems-with-
alias.html

标准SQL不允许在WHERE子句中引用列别名。之所以施加此限制,是因为在评估WHERE子句时,可能尚未确定列值。例如,以下查询是非法的:

SELECT id, COUNT(*) AS cnt FROM tbl_name WHERE cnt > 0 GROUP BY id;

试试这个,代替:

SELECT x + y AS z, t.* FROM t WHERE x = 1 HAVING z = 2;


 类似资料:
  • 在 MySQL 中,可以使用 HAVING 关键字对分组后的数据进行过滤。 使用 HAVING 关键字的语法格式如下: HAVING <查询条件> HAVING 关键字和 WHERE 关键字都可以用来过滤数据,且 HAVING 支持 WHERE 关键字中所有的操作符和语法。 但是 WHERE 和 HAVING 关键字也存在以下几点差异: 一般情况下,WHERE 用于过滤数据行,而 HAVING 用

  • 问题内容: 我正在使用Redis和排序集来创建游戏排行榜,并且已经设法使基本版本正常运行。我想知道是否可以进一步过滤类别?例如,假设我正在全球范围内跟踪用户的分数,并且每个用户都有一个国家/地区字段来指定他们来自何处。 是否可以在我要从特定国家(而不是整个数据库)中抽取前10名用户的地方进行过滤? 问题答案: 是的,这是可能的,但是这样做会增加应用程序层的复杂性和数据级别的存储。由于是键/值存储库

  • 问题内容: 我应该使用哪个过滤器来定义要使用apender记录的特定级别?例如: Java的 log4j2.xml: 文件输出很好,但是在控制台中,我得到了这样的结果: 但是我需要追加程序仅输出INFO消息,而输出所有EXEPT INFO。因此,控制台输出应如下所示: 无法找到如何防止过滤器尊重级别继承的方法。是否有可能做到这一点? 问题答案: 这有效:

  • 问题内容: 我的应用程序中有2个过滤器。根据某些条件,我想选择是否执行第二个过滤器。有没有办法做到这一点? 我做了一些谷歌搜索,但没有成功。我希望请求继续执行而不执行第二个过滤器。那可能吗? 任何帮助将不胜感激。 问题答案: 您可以在请求中设置一个属性,然后在第二个过滤器中对其进行检查。 您可以像这样简化上面的代码: 这样,您只需检查属性“ executeSecondFilter”的存在

  • 问题内容: 我有一个下面的收藏 我想到3个嵌套级别…我只希望第3个数组中的元素以及第2个和第一个数组中的元素 我想要这个输出 同时,我想用做和只有…不想使用此 问题答案: 基本上,您必须使用每个级别来应用您的条件,并且必须使用内部嵌套数组的每个数组。那是因为您想将过滤后的数组传递给输出。因此将有过滤器和地图。在这种情况下,缩进可能确实有用。尝试: mongoplayground

  • 我正在使用OctoberCMS制作一个简单的画廊,基于Laravel和Twig。 如何按类别筛选记录? 我现在是这样做的,但我认为这不是一个好的解决方案: 我过滤了html,但是类别之外的所有项目的完整记录仍然存在,导致额外的分页和空白页。 数据库 > “images”表包含图像名称及其标记的类别。 图像列表 URL参数为/gallery/:category?/:页 访问像/gallery/nat