sql - 仅在哪里查询?

标签 sql sqlite

在sqlite中有像“ only”这样的关键字吗?我必须写一个查询来显示只保留红船的水手姓名。所以我当前的查询是:

select s.sname
from sailor s, boat b, reservation r
where s.sname = r.sname
and b.bname = r.bname
and b.color = 'red';


上面查询的问题是它还会显示保留红色+其他颜色小船的水手姓名。我的查询结果:

a reserve red boat
a reserve green boat
b reserve red boat


但由于他只保留红船,因此应该只显示b。

最佳答案

您可以使用NOT EXISTS子句仅用red船来过滤水手。

select r.sname
from reservation r
join boat b
on b.bname = r.bname
and b.color = 'red'
and not exists ( select 1 from reservation r2
                 join boat b2
                 on r2.bname = b2.bname
                 and r2.sname = r.sname
                 and b2.color <> 'red' )

关于sql - 仅在哪里查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771232/

相关文章:

python - 如何使用 Flask/SqlAlchemy/SQLite 对过去 7 天的每一天的数据库记录进行分组?

android - 应用程序因 java.lang.IllegalArgumentException : column '_id' does not exist 而崩溃

java - Android SQLite尝试解锁读锁,当前线程未锁定

sql - 如何不从不喜欢条件的地方排除 null?

MySQL 为依赖表生成 sql 插入

mysql - 将数据插入有条件的表中的每条记录中,但自动填充它......我会尽力解释 :-)

php - 如何使用 php 在 mysql 中的单个记录中的多个字段中选择和显示最大值(和最小值)

android - 代码有问题吗?

java - 将选择的日期时间对话框选择器转换为存储在 sqlite DB 中

sql - 创建 SQL Server 沙箱