Использование Union All и Order By в MySQL

Ве 2 таблицы: я

create table advertised_products(id int,title varchar(99),timestamp timestamp);
insert advertised_products select 1,'t1',curdate();

create table wanted_products(id int,title varchar(99),timestamp timestamp);
insert wanted_products select 1,'t1',now();

используя этот запрос для получения записей:

(
SELECT 
    ap.*,
    'advertised'  as type 
FROM advertised_products as ap
)
union all
(
SELECT 
    wp.*,
    'wanted' as type 
FROM wanted_products as wp
)
ORDER BY timestamp desc limit 3

Но это дает ошибку:

Колоннаотметка времени» в порядке оговорка неоднозначна

Как я могу отсортировать это?

 Pacerier05 мая 2015 г., 08:51
Какую версию MySQL вы используете? Ваши запросы не содержат ошибок и отлично работают здесь (версия5.5.10).

Ответы на вопрос(2)

Решение Вопроса

Оберните это в подзапрос.

SELECT s.*
FROM
    (
        SELECT  ap.*, 'advertised'  as type 
        FROM advertised_products as ap
          union all
        SELECT  wp.*, 'wanted' as type 
        FROM wanted_products as wp
    ) s
ORDER BY s.timestamp desc 
limit 3
 Muhammad Raheel15 окт. 2012 г., 11:53
Спасибо! это работает отлично!
 Pacerier05 мая 2015 г., 08:52
@JohnWoo, я должен что-то упустить.Почему упаковка в подзапросах нужно?

Ошибка лежит здесь,

 "ORDER BY timestamp desc limit 3"

поскольку вы объединяете запрос двух таблиц, вы должны знать, какие поля вы используете, в какой таблице. Очевидно, что в вашей таблице отсутствует ссылка на таблицу "Сортировать по" пункт

упомяните имя таблицы / псевдоним имени таблицы, как показано ниже

 "ORDER BY your_table_name.timestamp desc limit 3"

Ваш ответ на вопрос