我有一个包含国家/地区代码和名称的表countries
:
name code
FRANCE FR
JAPAN JP
页面查看统计信息表views
:
page_id code date etc...
34 FR 2015-01-01
34 FR 2015-01-02
34 JP 2015-01-02
我想输出显示该页面的所有国家/地区的列表,但是使用国家/地区名称,因此结果应该说明:FRANCE, JAPAN
我可以轻松获取其运行的国家/地区代码列表:
SELECT code FROM views WHERE page_id = 34 GROUP BY code;
但将它们映射到countries表中的名称是很难的。有什么想法吗?
我试过这个,但它不起作用:
SELECT
countries.name as name_from_countries,
FROM
countries
INNER JOIN name_from_countries ON countries.code = views.code
WHERE
views.page_id = 34
GROUP BY
views.code
答案 0 :(得分:2)
这里不需要GROUP BY。只需使用DISTINCT。
SELECT DISTINCT countries.name as name_from_countries
FROM countries
INNER JOIN views ON countries.code = views.code
WHERE
views.page_id = 34
答案 1 :(得分:1)
您需要将countries.name
添加到GROUP BY
- 我假设您在这里有一些汇总:
SELECT v.code, c.name AS name_from_countries
FROM views v INNER JOIN countries c
ON v.code = c.code
WHERE v.page_id = 34
GROUP BY v.code, c.name;
如果您没有任何汇总(例如COUNT(*)
),那么您可以获得至少包含一个视图的国家/地区列表,如下所示:
SELECT c.code, c.name AS name_from_countries
FROM countries c
WHERE EXISTS ( SELECT 1 FROM views v
WHERE v.code = c.code
AND v.page_id = 34 );