获取国家/地区的SQL查询

时间:2012-08-21 07:27:42

标签: sql

我有一个带有文件的表

表名:
CountriesInfo

country | continent
--------|----------
India   | Asia
China   | Asia
Ireland | Europe
England | Europe
  1. 用户将选择国家/地区
  2. 系统应显示所选国家/地区的所有其他国家/地区 我只想使用JOINS(不是子查询)。有办法吗?

6 个答案:

答案 0 :(得分:1)

试试这个:

您可以使用同一个表加入并获得结果:

select C.country
from   CountriesInfo C 
join
    (select *
     from  CountriesInfo
     where country='India')a
on C.continent=a.continent


SQL Fiddle Demo

答案 1 :(得分:1)

  

系统应显示所有其他国家/地区   所选国家的大陆我只想使用JOINS(不是   子查询)。有办法吗?

是的,这是获得它的方法。这适用于SQL Server和&的MySQL。

SELECT DISTINCT C2.country 
FROM CountriesInfo C1 
JOIN CountriesInfo C2 ON C1.continent=C2.continent 
WHERE C1.country='INDIA'

See the demo for MySQL
See the demo for SQL Server

答案 2 :(得分:0)

使用此查询自行加入表:

SELECT T2.Country
FROM CountriesInfo T1
JOIN CountriesInfo T2 ON T1.Continent = T2.Continent
WHERE T1.Country = 'Ireland'

当然你可以将参数传递给where子句(而不是“Ireland”)。 此查询是自我加入本身,为您提供与所选国家/地区位于同一大洲的国家/地区列表。

答案 3 :(得分:0)

Select s.country 
from countriesInfo R, countriesInfo S
where r.country = 'india'
and s.continent = r.continent

答案 4 :(得分:0)

SELECT DISTINCT ci2.country FROM CountriesInfo ci1
JOIN CountriesInfo ci2 ON ci1.continent=ci2.continent
WHERE ci1.country=<SELECTED_COUNTRY>

答案 5 :(得分:0)

这看起来有点像我的作业!一种方法是这样的:

DECLARE @chosenCountry VARCHAR(MAX)
SET @chosenCountry = 'India' -- Set it however you want here...

SELECT ciSameContinent.country FROM CountriesInfo ci
INNER JOIN CountriesInfo ciSameContinent ON ci.continent = ciSameContinent.continent
WHERE ci.country = @chosenCountry
AND ciSameContinent.country <> @chosenCountry -- Forgot this bit which is needed to exclude the chosen country as per the question

这符合要求,因为它返回来自同一大洲的其他国家(并且不包括所选国家/地区),并且不使用子选择。