Сортировка результатов объединения из двух таблиц в 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 и так далее. Может кто-нибудь сказать мне, какие изменения я должен внести в запрос, чтобы достичь результата.

0

Решение

Кажется, что один из (или оба) 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),

0

Другие решения

Попробуйте этот запрос:

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
0

По вопросам рекламы [email protected]