У меня есть две таблицы, которые полностью различаются по полю и данным, но я хочу отсортированные данные из обеих таблиц. Я использовал предложение 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
это тип текста. Как насчет броска так:
(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)
,
Попробуйте этот запрос:
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