MySQL UNION没有返回唯一列

时间:2014-12-05 08:30:59

标签: php mysql sql

我有这个查询

SELECT model,year FROM new_vehicles WHERE make=Ford
UNION
SELECT model,year FROM old_vehicles WHERE make=Ford ORDER BY model    

在此之后,我在PHP中有一个while语句,以获得这些模型的列表以及年份。

问题是这会在列表中打印出重复的模型。如果我在查询中不使用年份,我会获得唯一的模型列表。我需要年份,因为我在WHILE中使用它。

我在上面的SELECT之后添加了不同但它没有改变结果,可能是因为UNION无论如何返回uniques。

无论如何如何获得独特的模型并包含年份?

2 个答案:

答案 0 :(得分:0)

使用'组'每个模型返回一行的子句,但您需要决定要查看哪一年。我假设最新的。

包括'制作'可能是值得的。在查询中也是如此。它可以使报告更容易。

未测试

SELECT make, model, max(year) 
FROM new_vehicles 
WHERE make = 'Ford' 
GROUP_BY make, model
ORDER BY make, model   
UNION 
SELECT model, max(year) 
FROM old_vehicles 
WHERE make = 'Ford' 
GROUP_BY make, model
ORDER BY make, model   

答案 1 :(得分:0)

试试这个......

SELECT distinct(nv.model),
nv.year as newModelYear, 
ov.year as oldModelYear 
FROM new_vehicles nv, old_vehicles ov 
WHERE 
nv.make = ov.make and 
nv.make= 'Ford'