有一段sql,大家觉得会按什么结构执行,为什么?
这是两段结构,实际运行是按照第一段结构执行的,即order by和limit睡union的结果进行排序和分页。
为什么order by 和 limnit不是只作用于下一半的sql呢?
求解释!
有一段sql,大家觉得会按什么结构执行,为什么?
这是两段结构,实际运行是按照第一段结构执行的,即order by和limit睡union的结果进行排序和分页。
为什么order by 和 limnit不是只作用于下一半的sql呢?
求解释!
加圆括号:
(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
MySQL union官方文档
这个没什么好纠结的
mysql解析sql语句时候时认为union的优先级比order 高,所以就按照你说的第一种情况执行。
文档中也明确说明了,如果想打破默认的优先顺序,用括号把sql语句括起来就行了。
5 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
1 回答2.4k 阅读✓ 已解决
1 回答2.9k 阅读✓ 已解决
5 回答1.4k 阅读
去掉UNION或者加括号,就只作用于下半部分。
这种情况是因为MySQL要先执行UNION然后才执行order by。