mysql - 所有带有子查询的 sql,且不存在

标签 mysql sql

我正在做一个sql问题,问题是这样的:

获取俄罗斯所有船舶类别。如果数据库中没有俄罗斯的类别,则获取数据库中的所有类别。 结果集:国家、类别

3 个答案(#3 是错误的):

  1. 从类(class)中选择国家/地区、类(class) 其中国家/地区 = 全部(从类别中选择国家/地区 其中国家/地区='俄罗斯')

  2. 选择国家/地区、舱位 从类里面 不存在的地方(选择国家 从类里面 其中国家='俄罗斯') 或国家='俄罗斯'

  3. 选择不同的国家/地区、类别 从类里面 所在国家/地区不在(选择国家/地区 从类里面 其中国家='俄罗斯') 或国家='俄罗斯'

任何人都可以解释“所有示例如何工作”,我不完全理解这如何涵盖上述所有情况:仅查找俄语类,如果没有则查找所有其他类。

任何人都可以解释一下ans2和错误的ans3有何不同,我认为这可能与空值有关,但我不太确定..我对sql很陌生

最佳答案

all 是与子查询中所有值的比较,我认为您使用它的方式不是很有用。

对于大于、小于等数值比较来说,它会更有用。

来自 MySQL 站点: 从 t1 中选择 s1,其中 s1 > 全部(从 t2 中选择 s1);

这将从 t1 中选择所有大于 t2 中所有 s1 的 s1。

你的例子

您的示例:select Country, class from Classes where Country = ALL(select Country from Classes where Country='Russia') 此子查询仅返回一堆“Russia”行,如您所示只选择国家/地区等于俄罗斯的国家/地区。

但是,如果不存在值,则 Oracle 中记录的 ALL(MySQL 中未记录)将返回 true 条件,允许您从俄罗斯选择所有值,除非不存在俄罗斯行。

关于mysql - 所有带有子查询的 sql,且不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900277/

相关文章:

具有零到多个参数的 SQL In 子句

mysql - 每天的第一个值和最后一个值之间的差异

php - 远程 MySQL 连接返回系统错误 : 111 or PDO error [2002]

java - 持久化一个对象的成员,即一个实体 "has"而不是对象本身

mysql - 查看SQL数据表

mysql - 获取正确年份的sql查询

c++ - (C++) 序列化我的客户数据库的最佳方式?

mysql - 使用 SQL,设计行为类似于其他表接口(interface)的表的最佳实践是什么?

Java 对传递给 JSP 的 SQL 查询返回空指针异常

php - 使用此代码我只能得到一个结果