2016-04-28 41 views
0

我正在使用内部连接,并且我希望从这两个表格中获得不同的值,并且在我的查询中我正在从这两个表格中选择列。 像使用连接时从2个表格中需要的不同的值

select countryid,countryname,city from country 
inner join city 
on country.id=city.id 

我可以用不同的像

select distinct t.countryid from (select countryid,countryname,city from country 
inner join city 
on country.id=city.id) as t 

,但我不能够使用城市这样

我想是选择不同的国家,城市

该怎么做

+0

'select countryname,city from country inner join city on country.id = city.id'? –

+0

@FelixPamittan你究竟是什么意思? –

+0

上面的查询是否给出了正确的结果? –

回答

0

按我的这种理解,你希望得到国家的所有不同对 - 可能城市后的最初加入。考虑到这一点,可以这样做:

WITH CTE 
AS 
(
SELECT CountryID, CountryName, City 
FROM Country 
INNER JOIN City 
    on Country.Id = City.id 
) 
SELECT DISTINCT CountryName, City 
FROM CTE 

这将为您提供加入后的所有不同的countryname和城市。

0

在这种情况下,我会s你最多使用两个ctes。事情是这样的:

WITH cteCountry AS(
SELECT DISTINCT countryid, countryname 
    FROM country), 
cteCity AS (
SELECT DISTINCT countryid, cityid, cityname 
    FROM city 
) 
SELECT co.countryid, co.countryname, ci.[city] 
FROM cteCountry AS co 
INNER JOIN cteCity AS ci ON co.countryid = ci.countryid 
+0

hello @Rene我在你的查询中尝试了你的逻辑,但是我仍然得到重复 –

+0

那么你的表结构究竟是什么以及你得到的重复是什么?是否有可能,重复的地方是不同国家的同名城市? – Tyron78