我有两个表,它们的字段和数据完全不同,但我想从这两个表中排序数据。我为此目的使用了 union 子句,并且成功获取了结果集,但无法对数据进行排序。我尝试了很多技巧但都失败了。
我的查询是 -
(SELECT amount FROM `purchase` order by amount desc limit 0, 10 )
UNION
(SELECT total_price as amount from `item` order by total_price desc limit 0, 10) order by amount desc
结果是 -
-----------
amount
-----------
9999.000
9998.000
999.000
9730
7750
7700
7600
6881
20000
13400
10250
10000
结果正常,但是可以看到数据不是按数量排序,而是按表排序。但我想要最高的,即 20000 等等。谁能告诉我必须在查询中进行哪些更改才能获得结果。
最佳答案
似乎 amount
和 total_price
之一(或两者)是文本类型。像这样的 Actor 怎么样:
(SELECT amount + 0 AS amount FROM `purchase` order by amount desc limit 0, 10)
UNION
(SELECT total_price + 0 AS amount from `item` order by total_price desc limit 0, 10)
ORDER BY amount desc
如果 xxx + 0
不起作用,请使用 CAST(total_price AS SIGNED INTEGER)
。
关于php - mysql中两个表的联合结果集排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26210805/