2013-10-12 90 views
0

我正在运行SQL查询,如下所示,为每个属性选择具有LEFT JOIN的数据,主要从table1('main_table')为每个属性选择数据,并在表2中显示数据( '房屋'),如果table2也持有每个房产的数据。SQL查询多列DISTINCT在一列

但是,我想只显示结果1每个属性。 我试过各种结果与DISTINCT之前,我选择的领域,但它没有奏效。

下面是SQL并显示返回的数据的示例。 因此,例如,梅菲尔德路128号在表2中有两个条目,所以它返回两次,但我只想显示每个房子一次。

非常感谢

SELECT main_table.housenumber, main_table.streetname, main_table.rent, houses.houseID, houses.path, houses.rooms 
FROM main_table 
LEFT JOIN houses ON main_table.housenumber = houses.housenumber 
AND main_table.streetname = houses.streetname 

533 Portswood Road 57 NULL NULL       NULL 
35 Ripstone Gardens 70 NULL NULL       NULL 
67 Kent Road  68 NULL NULL       NULL 
21 Bealing Close 65 NULL NULL       NULL 
75 Broadlands Road 76 NULL NULL       NULL 
7 Gordon Avenue 70 243  images_housing/GOR1.jpg   4 
29 Broadlands Road 74 NULL NULL       NULL 
10 Westbrook Way 65 NULL NULL       NULL 
328C Burgess Road  85 NULL NULL       NULL 
10 Thackeray Road 68 NULL NULL       NULL 
128 Mayfield Road 70 311  images_housing/mayfield1.jpg 4 
128 Mayfield Road 67 311  images_housing/mayfield1.jpg 4 
+0

什么是你需要准确地当房子记录是重复? FIFO记录还是LIFO记录? –

回答

0

也许这样吗?

SELECT 
    main_table.housenumber, 
    main_table.streetname, 
    max(main_table.rent) 
    houses.houseID, 
    houses.path, 
    houses.rooms 
FROM main_table 
LEFT JOIN houses ON main_table.housenumber = houses.housenumber 
AND main_table.streetname = houses.streetname 
group by 
    main_table.housenumber, 
    main_table.streetname, 
    houses.houseID, 
    houses.path, 
    houses.rooms 
0

说一个房子有多个条目。如果你不关心你在其他列中获得的可能值,那么你可以通过使用洪水猛兽MySQL扩展到组:

Select 
    m.housenumber, 
    m.streetname, 
    m.rent, 
    h.houseID, 
    h.path, 
    h.rooms 
From 
    main_table m 
     Left Join 
    houses h 
     on m.housenumber = h.housenumber and 
      m.streetname = h.streetname 
Group By 
    m.housenumber, 
    m.streetname 

大多数数据库不会让你这样做,因为通常你确实关心你获得的其他可能的价值。

0

独特将检查所选择的所有列是唯一的,而不仅仅是其中之一。

这可能会帮助你:SQL Group by & Max