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

2016-09-12 10:56:33 +08:00
 heat
比如 SELECT a AS b WHRER b=1

我这样使用会报错说 b 不存在
5439 次点击
所在节点    MySQL
17 条回复
kxjhlele
2016-09-12 11:04:39 +08:00
直接用 a 不行吗,
非要用 b 就子查询吧。
ebony0319
2016-09-12 11:07:04 +08:00
这是最初级的问题。因为你没有搞清楚 select 是最后一步。如果一定要运行:
select *  from(
select a AS b
)T where T.b=1
heat
2016-09-12 11:15:44 +08:00
@kxjhlele
@ebony0319 两位说的都不太符合需求,我上面说的可能比好单纯了,其实场景是这样的。 A 本身就是一个复杂的 SELECT 语句,其中还包括了 CASE WHEN 。是从另一两个数据表里(通过 CASE 和 WHEN 来判断从哪个表里拿)查询出来的 title ,现在我又需要在父级查询中通过 LIKE 筛选这个 TITLE...于是没辙了,又不能直接做成联表查询
kxjhlele
2016-09-12 11:25:35 +08:00
@heat 你这个需求子查询可以解决的吧,
gejigeji
2016-09-12 12:12:19 +08:00
having
RihcardLu
2016-09-12 12:14:50 +08:00
ls+1
infun
2016-09-12 13:05:42 +08:00
@ebony0319 select 不是最后一步,至少在 order by 前面
ebony0319
2016-09-12 14:31:22 +08:00
@infun
@heat 我更正一下上面的说法,因为当时就这场景来说的。
查询从 from 开始 然后是联结 ,然后 where , Group by,Having, 在到 select 最后才是 order by 。楼主出现的情况,我记得有一本书讲过怎么处理,印象有点模糊了。楼主可以拿出实际的代码来看好一点。
DRcoding
2016-09-12 14:36:59 +08:00
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
2016-09-12 16:21:57 +08:00
在 having 那里过滤就好了, 233
wyntergreg
2016-09-12 16:31:06 +08:00
少 from 子句你这 sql 本身不完整
bombless
2016-09-12 16:35:05 +08:00
@wyntergreg FROM 不是必须的
wyntergreg
2016-09-13 08:32:41 +08:00
@bombless 扯犊子你不加 from 试试,马上给你报语法错误
bombless
2016-09-13 09:14:31 +08:00
@wyntergreg 你试过了么,滑稽
chaleaoch
2016-09-13 10:57:18 +08:00
@DRcoding 请问哪本书有类似这样的介绍?
wyntergreg
2016-09-13 12:04:34 +08:00
@bombless 基本的 sql 原则还需要试?毕业了吗孩子?
bombless
2016-09-13 17:29:44 +08:00
@wyntergreg 噗,你没用过 mysql 是吧,这里说的是 mysql

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/305602

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX