最近公司有一个需求,根据某一个字段多表查询另一个字段的值,且要求不能重复。然后sql语句我就想到了DISTINCT,毕竟这是大家都知道去重sql 关键字。但是还是查到了重复的值,让你很生气有没有!话不多说,上sql:
SELECT DISTINCT map.BwHotelID,tel.BusinessState,map.HotelName,map.SourceID FROM `BW_HotelID_Map_ForAll` map
LEFT JOIN BWWeb_VHotel tel ON map.BwHotelID = tel.VHotelID where map.SourceHotelID = ‘13949486’
随度了一下,发现 DISTINCT 后面的字段都不能重复。很坑的有没有。我要BwHotelID这个字段不重复,但是我也想要HotelName这个啊! 后又度了一下,发现有网友说
count(DISTINCT map.BwHotelID)
就能去重了,经测试,真的可以哎!
然后我就高高兴兴的改了一下sql 改后的sql:
SELECT DISTINCT map.BwHotelID,tel.BusinessState,map.HotelName,map.SourceID FROM `BW_HotelID_Map_ForAll` map
LEFT JOIN BWWeb_VHotel tel ON map.BwHotelID = tel.VHotelID where map.SourceHotelID in('13949486',...)
然后发现,不论我的in()函数里面有多少个值,它都只能查出来一个。很无奈
只能不用in()函数了,然后苦逼的写了个程序,一个一个查询的。o(︶︿︶)o 唉