如何把两个不同的 sql 语句用 order by 排序后(表结构相同但是排序方法不同) 然后合并起来?

2017-02-25 17:54:16 +08:00
 RadishWind

找了 Stackoverflow 上的方法: http://stackoverflow.com/questions/3531251/using-union-and-order-by-clause-in-mysql http://stackoverflow.com/questions/30566469/combine-two-mysql-queries-with-two-different-order-by-statements

出来的结果跟没排序一样,请问大家有什么好的办法没有?

2612 次点击
所在节点    问与答
5 条回复
loading
2017-02-25 18:07:12 +08:00
我不擅长 SQL ,所以我都会配合程序处理。
rockpk008
2017-02-25 18:11:35 +08:00
有些忘记了, with as 应该可以吧。
billlee
2017-02-25 18:27:44 +08:00
前段时间刚写过类似的,不知道有没有更好的办法

SELECT ... FROM ((
     SELECT ... FROM ...
     ORDER BY ...
     LIMIT 0, ?
) UNION (
     SELECT ... FROM ...
     ORDER BY ...
     LIMIT 0, ?
  )
) ORDER BY ... LIMIT ?, ?
shoaly
2017-02-25 19:31:52 +08:00
拆开逻辑吧
分别 sql 取到 2 个 数组里面, 然后 数组在合并 在排序.
否则就算 sql 整在一起 一起喝成写完之后, 过两天就忘记了, 再也没办法维护
ebony0319
2017-02-26 09:04:48 +08:00
增加一个标记位就可以了,最后对标记位排序。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/343119

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX