如何在select语句中“过滤”重复项

时间:2013-08-27 07:48:00

标签: sql

我有2个表:“Hotels”和“Area”。

Hotels”表格包含以下列:INDEX, NAME, AREA

示例数据:

(1,'hotel bla", 4)

Area”tbale包含以下列:INDEX, NAME, CODE

示例数据:

(4,'TEL-AVIV','TLV')

这意味着“hotel bla”位于tel aviv

我需要创建一个名称和面积相同的酒店列表(“重复酒店”) 对于examaple: 酒店有3个记录:

1,'hotel a',1
2,'hotel a',1
3,'hotel b',2
4,'hotel b',2
5,'hotel c',1

区域有2条记录

1,'tel-aviv','TLV'
2,'haifa','HAF'

输出应该是这样的:     '酒店一','1'     'hotel b,'2'

更新: 如果我在表中只有1条酒店记录,我不想退货。 您的所有答案也将归还

参见固定的examaple

2 个答案:

答案 0 :(得分:0)

您需要使用distinct关键字才能获得不同的记录。

select distinct name, area from hotels

如果您只需要名称和区域列,这将只为您提供唯一的行。

但如果您还需要ID列,可以尝试

select id, max(name) name, max(area) as area from hotels group by name,area;

select id, first(name) name, first(area) as area from hotels group by name,area;

取决于您正在使用的DBMS

答案 1 :(得分:0)

select name, area
  from hotels
 group by name, area
having count(1) > 1;

这将为您提供同名且属于同一地区的酒店。

sqlfiddle的演示。