如何在查询的“ WHERE”部分中使用已定义的AS别名?

时间:2018-08-05 19:30:54

标签: mysql

为什么以下查询不起作用?

    SELECT uid, 
       CONCAT(fname,' ',lname) AS name,
       (SELECT COUNT(t1.id) FROM table1 t1 WHERE t1.reference = user_id) AS amount  
     FROM users 
        WHERE type = 'SLA' AND amount > 0;

在查询的SELECT部分​​中,我使用AS别名。哪个工作正常,但现在我要确保ALIASES实际上持有一些值,并且只返回这样做的行。

我想念什么吗?

1 个答案:

答案 0 :(得分:0)

您不能在where子句的select中使用别名,我想您可以编写一个JOIN子查询来获得另一个结果集来代替它。

SELECT u.uid,
     CONCAT(u.fname,' ',u.lname) AS name,
     t1.amount 
FROM users u 
INNER JOIN (
    SELECT COUNT(*) as amount,
           reference
    FROM table1 
    GROUP BY reference
) t1 ON t1.reference = u.user_id
WHERE u.type = 'SLA' and t1.amount > 0