[英]Sorting union result set of two table in mysql
我有两个表,它们在字段和数据上完全不同,但是我想从两个表中对数据进行排序。 为此,我使用了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,依此类推。 任何人都可以告诉我为实现结果我必须在查询中进行哪些更改。
试试这个查询:
SELECT *
FROM (
SELECT cast(amount AS DECIMAL(10,2)) as amount
FROM `purchase` limit 0, 10
UNION
SELECT total_price AS amount
FROM `item` limit 0, 10) a
ORDER BY amount DESC
amount
和total_price
(或两者)之一似乎是文本类型。 像这样投射如何:
(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)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.