想象一下,我有这个表,项目,大陆和国家。项目可以在很多国家进行,而在另一个专栏中,每个国家都有一个代表其大陆的数字。
我想创建一个查询,为每个填充其国家/地区的大陆返回一列。但与此同时,我不希望它返回不在大陆的项目。
加入这三个查询会更少:
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>
提前谢谢
答案 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);
每个大陆并不是一列,但在我看来,数据的显示无论如何都必须在表示层完成,而不是在数据库级别。