Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按字母顺序查找唯一对象_Sql - Fatal编程技术网

Sql 按字母顺序查找唯一对象

Sql 按字母顺序查找唯一对象,sql,Sql,我试图通过SQLZOO网站了解SQL是如何工作的。我在这项任务上结巴了:按字母顺序列出每一个大陆和排在第一位的国家的名称。我试过这个: SELECT DISTINCT continent, name FROM world WHERE name LIKE 'A%' ORDER BY name 但后来我发现: SELECT continent, name FROM world x WHERE name <= ALL(SELECT name FROM world y WHERE x.

我试图通过SQLZOO网站了解SQL是如何工作的。我在这项任务上结巴了:按字母顺序列出每一个大陆和排在第一位的国家的名称。我试过这个:

SELECT DISTINCT continent, name 
FROM world 
WHERE name LIKE 'A%' 
ORDER BY name
但后来我发现:

SELECT continent, name 
FROM world x 
WHERE name <= ALL(SELECT name FROM world y WHERE x.continent = y.continent)
选择大陆、名称
来自世界x

其中名称您的代码仅查找以
A开头的国家,如阿尔巴尼亚、奥地利和安道尔

这段代码做了一些完全不同的事情:

SELECT continent, name 
FROM world x 
WHERE name <= ALL (SELECT name FROM world y WHERE x.continent = y.continent);
或者更简单地说:

SELECT continent, MIN(name)
FROM world
GROUP BY continent;

我认为这两种方法都用一种更简单的方式来表达逻辑。

对于文本类型的数据来说,什么是“最小值”(MIN(name)“?
MIN()
MAX()
在字符串上定义得非常好。从技术上讲,他们使用一种叫做“排序规则”(你可以研究)。实际上,它使用字母顺序。但是为什么DISTICNT本身不给出唯一的名称/值呢?“这对我没有任何意义,我真的不明白。”气球熊
selectdistinct
是SQL中的一个子句,它跨
select
中的所有列/表达式返回唯一值。它不会仅基于一列返回不同的值。为什么在我的代码中,如果在开始时使用distinct,它会返回两次欧洲?
SELECT continent, MIN(name)
FROM world
GROUP BY continent;