v4.2sql执行报错

为大家分享一个之前遇到的sql执行问题,报错语法问题:
环境 ob v4.2 租户: ob mysql
sql 查询报错:
select t.rule_code,t.rule_name,t.rule_detail from t_ant_person_case_rule t
where
t.regist_no = ‘070201030120’
and t.valid_ind = ‘1’
and t.rule_ind = ‘3’
order by rule_code asc
UNION
select t.rule_code,t.rule_name,t.rule_detail from t_ant_vehicle_case_rule t
where
t.regist_no = ‘070201030120’
and t.valid_ind = ‘1’
and t.rule_ind = ‘3’
order by rule_code asc
UNION
select t.rule_code,t.rule_name,t.rule_detail from t_ant_repairfactory_case_rule t
where
t.regist_no = ‘070201030120’
and t.valid_ind = ‘1’
and t.rule_ind = ‘3’
order by rule_code asc

经分析,和union 前的order by 有关,
v4 版本再支持这种写法,在sql 最后一行保留一个order不用即可,供大家学习

3 个赞

目前没有碰到这种问题,谢谢分享!

OB4.2 MySQL 模式,UNION 各个分支子查询不能直接写 ORDER BY,会报语法错误。
ORDER BY 仅作用于最终合并后的完整结果,放到整个 SQL 末尾即可。
如果必须子查询内排序,要包括号并带上 limit。

语法问题

SQL语法不对