这是最初级的问题。因为你没有搞清楚 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...于是没辙了,又不能直接做成联表查询
@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