繁体   English   中英

在MySQL中对两个表的联合结果集进行排序

[英]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

样本演示

amounttotal_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM