V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
heat
V2EX  ›  MySQL

MYSQL 中如何把 SELECT a AS b 中的 b 作为 WHERE 筛选条件

  •  
  •   heat · 2016-09-12 10:56:33 +08:00 · 5468 次点击
    这是一个创建于 2993 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 SELECT a AS b WHRER b=1

    我这样使用会报错说 b 不存在
    17 条回复    2016-09-13 17:29:44 +08:00
    kxjhlele
        1
    kxjhlele  
       2016-09-12 11:04:39 +08:00
    直接用 a 不行吗,
    非要用 b 就子查询吧。
    ebony0319
        2
    ebony0319  
       2016-09-12 11:07:04 +08:00
    这是最初级的问题。因为你没有搞清楚 select 是最后一步。如果一定要运行:
    select *  from(
    select a AS b
    )T where T.b=1
    heat
        3
    heat  
    OP
       2016-09-12 11:15:44 +08:00
    @kxjhlele
    @ebony0319 两位说的都不太符合需求,我上面说的可能比好单纯了,其实场景是这样的。 A 本身就是一个复杂的 SELECT 语句,其中还包括了 CASE WHEN 。是从另一两个数据表里(通过 CASE 和 WHEN 来判断从哪个表里拿)查询出来的 title ,现在我又需要在父级查询中通过 LIKE 筛选这个 TITLE...于是没辙了,又不能直接做成联表查询
    kxjhlele
        4
    kxjhlele  
       2016-09-12 11:25:35 +08:00
    @heat 你这个需求子查询可以解决的吧,
    gejigeji
        5
    gejigeji  
       2016-09-12 12:12:19 +08:00   ❤️ 1
    having
    RihcardLu
        6
    RihcardLu  
       2016-09-12 12:14:50 +08:00 via Android
    ls+1
    infun
        7
    infun  
       2016-09-12 13:05:42 +08:00
    @ebony0319 select 不是最后一步,至少在 order by 前面
    ebony0319
        8
    ebony0319  
       2016-09-12 14:31:22 +08:00
    @infun
    @heat 我更正一下上面的说法,因为当时就这场景来说的。
    查询从 from 开始 然后是联结 ,然后 where , Group by,Having, 在到 select 最后才是 order by 。楼主出现的情况,我记得有一本书讲过怎么处理,印象有点模糊了。楼主可以拿出实际的代码来看好一点。
    DRcoding
        9
    DRcoding  
       2016-09-12 14:36:59 +08:00   ❤️ 2
    mysql 中 SQL 语句执行顺序:
    1. from
    2. on
    3. join
    4. where
    5. group by
    6. with
    7. having
    8. select
    9. distinct
    10. order by
    11. limit
    bombless
        10
    bombless  
       2016-09-12 16:21:57 +08:00
    在 having 那里过滤就好了, 233
    wyntergreg
        11
    wyntergreg  
       2016-09-12 16:31:06 +08:00
    少 from 子句你这 sql 本身不完整
    bombless
        12
    bombless  
       2016-09-12 16:35:05 +08:00
    @wyntergreg FROM 不是必须的
    wyntergreg
        13
    wyntergreg  
       2016-09-13 08:32:41 +08:00
    @bombless 扯犊子你不加 from 试试,马上给你报语法错误
    bombless
        14
    bombless  
       2016-09-13 09:14:31 +08:00 via Android
    @wyntergreg 你试过了么,滑稽
    chaleaoch
        15
    chaleaoch  
       2016-09-13 10:57:18 +08:00
    @DRcoding 请问哪本书有类似这样的介绍?
    wyntergreg
        16
    wyntergreg  
       2016-09-13 12:04:34 +08:00
    @bombless 基本的 sql 原则还需要试?毕业了吗孩子?
    bombless
        17
    bombless  
       2016-09-13 17:29:44 +08:00
    @wyntergreg 噗,你没用过 mysql 是吧,这里说的是 mysql
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1247 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:59 · PVG 07:59 · LAX 15:59 · JFK 18:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.