我有两张桌子:
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'是不明确的
我该如何对此进行排序?
答案 0 :(得分: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
答案 1 :(得分:0)
错误在于此处,
"ORDER BY timestamp desc limit 3"
在组合两个表时,查询必须知道您在哪个表中使用哪些字段。明确地说您在“orderby”子句中缺少表引用
提及表名的表名/别名,如下所示
"ORDER BY your_table_name.timestamp desc limit 3"