MySQL SELECT语句中字段是否始终按列出顺序执行?
SELECT子句中字段的执行顺序是否固定?
首先明确:在MySQL中,SELECT列表里的字段确实会严格按照书写的从左到右顺序执行,所以你给出的那种依赖字段执行顺序的写法,在MySQL环境下是可靠的。
比如你写的这段代码:
SELECT (@thisoid := oid) as oid, (@thisoid + 1) as oid_plus_1 FROM p_person;
执行时会先计算(@thisoid := oid),把当前行的oid值赋值给变量@thisoid,之后再计算(@thisoid + 1),所以oid_plus_1列会得到正确的oid+1结果。
但要注意:这是MySQL的特定实现行为,并不是SQL标准规定的内容。SQL标准并没有强制要求数据库按SELECT字段的书写顺序执行计算,像PostgreSQL、SQL Server等其他数据库,可能不遵循这个规则,在这些数据库里用类似写法可能会得到不可预期的结果。
内容的提问来源于stack exchange,提问作者Tom Melly
相关产品推荐
相关产品推荐

