php - mysql中两个表的联合结果集排序

标签 php mysql sorting union

我有两个表,它们的字段和数据完全不同,但我想从这两个表中排序数据。我为此目的使用了 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 等等。谁能告诉我必须在查询中进行哪些更改才能获得结果。

最佳答案

似乎 amounttotal_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/

相关文章:

mysql - 如何使用jsp和mysql根据在下拉列表中选择的值获取文本框中的值

mysql - 如何使用mysqli获取总行数

android - 根据gridview android中的日期和时间对图像进行排序

javascript - 禁用对除第一列以外的每一列的排序

php - 困惑为什么mysqli_query返回false

php - 根据订单ID获取所有客户付款

php - CodeIgniter 或 Simple PHP,如何将一个表与另一个表的两列连接起来?

php - cURL 错误 60 - SSL 证书问题 - 无法获取本地颁发者

MySql 5.6 ubuntu linux 无中央面板

java - 使用 Java TreeSet 的 AlphanumComparator 进行链接