理解“Where 子句中的未知列”SQL 错误
可怕的“Where 子句中的未知列”错误是由 SQL 语句中的特定执行顺序引起的。 SQL 从右向左处理查询,这意味着 WHERE
子句在 SELECT
子句之前计算。
我们举个例子来说明一下:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE user_name = "john";</code>
此处,WHERE
子句尝试使用 user_name
进行过滤。但是,别名 user_name
仅在 SELECT
子句中定义。 因为先处理WHERE
子句,还没有遇到这个别名,导致“未知列”错误。
解决方案:
有两种简单的方法可以解决此问题:
在WHERE
子句中使用原始列名:这是最简单、最有效的解决方案。 按其实际名称而不是别名引用该列:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
将别名列括在括号中: 此方法强制数据库在 评估 子句之前解析别名 WHERE
。 虽然有效,但它通常比使用原始列名称效率低:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE (user_name = "john");</code>
通过了解 SQL 的求值顺序并采用其中一种解决方案,您可以有效解决“Where 子句中的未知列”错误。
以上是为什么我的 SQL 查询返回'Where 子句中的未知列”?的详细内容。更多信息请关注PHP中文网其他相关文章!