sql请求帮助!
sql1: select * from t1 where c='abcd' order by t1.name desc
sql2: select * from t2 c like '%abcd%' order by t2.name desc
sql3: select * from t3 c like '%ab%' or c like '%cd%' order by t3.name desc
每个sql单独执行时排序是正确按照name排列的。如果3条sql进行union后就不按name排序了,怎样才能使union后的排序按t1=>t2=>t3的顺序排列呢?
sql:
(
select * from t1 where c='abcd' order by t1.name desc
) union (
select * from t2 c like '%abcd%' order by t2.name desc
) union (
select * from t3 c like '%ab%' or c like '%cd%' order by t3.name desc
)
回答不对哦!
已经找到答案了!,谢谢你的回答。
解决方法:
在第一个t1中加上 limit 0,20就好了,呵呵。找了好多地方才找着的。。
mysql中3表union后排序不正确了?
答案:2 悬赏:80 手机版
解决时间 2021-01-24 00:37
- 提问者网友:献世佛
- 2021-01-23 14:46
最佳答案
- 五星知识达人网友:夜余生
- 2021-01-23 16:07
UNIOn 操作,自己隐含带一个 排序的处理.
因为 UNIOn 要把重复的数据去除掉。
你换 UNIOn ALL 看看。 这个不需要去除重复数据的, 也就不排序。
不排序的话, 应该不会修改你原有的数据的顺序。
因为 UNIOn 要把重复的数据去除掉。
你换 UNIOn ALL 看看。 这个不需要去除重复数据的, 也就不排序。
不排序的话, 应该不会修改你原有的数据的顺序。
全部回答
- 1楼网友:長槍戰八方
- 2021-01-23 16:21
用union all
,union 会滤重并且排序 ,查询效率就低了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯