4

私は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

しかし、それはエラーを与えます:

order句の列'timestamp'があいまいです

どうすればこれを並べ替えることができますか?

4

2 に答える 2

3

サブクエリでラップします。

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
于 2012-10-15T09:25:55.797 に答える
0

エラーはここにあります、

 "ORDER BY timestamp desc limit 3"

2つのテーブルを組み合わせる場合、クエリは、どのテーブルでどのフィールドを使用しているかを認識している必要があります。「orderby」句にテーブル参照がないことは明らかです。

以下のようにテーブル名/テーブル名のエイリアスを記載してください

 "ORDER BY your_table_name.timestamp desc limit 3"
于 2012-10-15T09:32:21.093 に答える