搜索

首页  >  问答  >  正文

MYSQL中如何把SELECT A AS B中的B作为WHERE筛选条件

比如SELECT a AS b WHRER b=1;

我这样使用会报错,说b不存在。

PHPzPHPz2786 天前675

全部回复(4)我来回复

  • 迷茫

    迷茫2017-04-17 15:38:18

    因为mysql底层跑SQL语句时:where 后的筛选条件在先, as B的别名在后。
    所以机器看到where 后的别名是不认的,所以会报说B不存在。

    如果非要用B做筛选条件的话:
    解决方案:外边再嵌套一层。
    select * from
    (
    select A as B from table
    ) t
    where t.B = XXX -- 任意的筛选条件

    如果不嵌套,只能用A做筛选条件了

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:38:18

    当然不存在,这个b只针对与a查询结果的一个别名
    select a AS b FROM table where a = 1

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:38:18

    select t.b from
    (

    select a as B from table

    ) t

    where t.b =xxxx

    此时的B是可以直接在where中使用的

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:38:18

    b是对查询结果a取的别名where里面肯定是不存在啊

    回复
    0
  • 取消回复