加入同一个表中选择同一列的两个查询

时间:2013-03-11 08:00:47

标签: mysql sql

想象一下,我有这个表,项目,大陆和国家。项目可以在很多国家进行,而在另一个专栏中,每个国家都有一个代表其大陆的数字。

我想创建一个查询,为每个填充其国家/地区的大陆返回一列。但与此同时,我不希望它返回不在大陆的项目。

加入这三个查询会更少:

SELECT PROJECTS,COUNTRIES AS `EUROPE` FROM WORLD WHERE COUNTRIES = 2;

SELECT PROJECTS,COUNTRIES AS `AFRICA` FROM WORLD WHERE COUNTRIES = 3;

SELECT PROJECTS  FROM WORLD WHERE PROJECTS NOT IN (SELECT PROJECTS FROM WORLD WHERE COUNTRIES = 1);

我已设法加入最后一个与其他两个中的一个,但我无法加入其中三个,它总是返回同一列中的国家组合而不是不同的... < / p>

提前谢谢

2 个答案:

答案 0 :(得分:1)

根据您提供的信息,这是我能提供的最佳答案:

SELECT PROJECT, COUNTRIES AS 'EUROPE' FROM WORLD t1
JOIN
SELECT PROJECTS,COUNTRIES AS `AFRICA` FROM WORLD t2
WHERE PROJECT NUMBER t1 = (SELECT PROJECTS FROM WORLD WHERE COUNTRIES = 1)

答案 1 :(得分:0)

这个怎么样:

SELECT 
PROJECTS, 
CASE COUNTRIES 
     WHEN 2 THEN 'Europe'
     WHEN 3 THEN 'Africa'
     ELSE 'elsewhere'
END AS Continent
WHERE COUNTRIES IN (2, 3)
AND PROJECTS NOT IN (SELECT PROJECTS FROM WORLD WHERE COUNTRIES = 1);

每个大陆并不是一列,但在我看来,数据的显示无论如何都必须在表示层完成,而不是在数据库级别。