首页 > 解决方案 > 查询 SELECT * AS 不工作

问题描述

我正在尝试做一些简单的事情,我想在一个查询中运行两个查询并合并结果。

我编写了以下代码:

database.query('SELECT * FROM `inventories` WHERE `status` = ' + 1 + ' AS `liveInventory`, SELECT * FROM `users` WHERE `balance` >= ' + 0.00 + ' AS `liveBalances`', function(error, call) {
    if(error){
        console.log(error);
        return;
    }

    console.log(call);
});

导致以下错误;

错误:ER_PARSE_ERROR:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'AS liveInventory, SELECT * FROM usersWHERE balance>= 0 AS liveBalances' 附近使用正确的语法`

语法不正确吗?

标签: javascriptmysqlsqlnode.js

解决方案


您可以为列或表使用别名,但不能使用 where 子句的结果。

标准 SQL 不允许在 WHERE 子句中引用列别名。施加此限制是因为在评估 WHERE 子句时,可能尚未确定列值。

参考

W3Schools 上有一些更好解释的示例,展示了 MySQL 别名的一般工作方式。


推荐阅读