oracle SQL:选择不同的值,其中它的所有记录中不包含另一个特定值

莫诺莫尼

这是我现有的数据库记录,我只希望它显示所有从未注册过 Science 的学生的姓名。

Name        | Subject     | Year
-----------------------------------
Ian Lee     | Math        | 2008
Ian Lee     | Science     | 2008
Ian Lee     | Econs       | 2006
Marie-Ann   | Geography   | 2006
Marie-Ann   | Literature  | 2009
Natalie S.  | Geography   | 2006
Julienne    | Math        | 2008
Julienne    | Science     | 2008
Julienne    | Literature  | 2009
Liam        | Literature  | 2009
Liam        | Econs       | 2006

我还有一个尚未注册任何课程的学生记录 Emily Toh。但正确的输出应该是

Name
------------
Marie-Ann
Natalie S.
Emily Toh
Liam

这是我以前叫的

SELECT DISTINCT en.Name
FROM ENROLLMENT en
WHERE NOT EXISTS (
    SELECT st.Name
    FROM STUDENT st
    WHERE en.Name = st.Name
    AND en.Subject = 'Science'
);

但它仍然让我显示所有学生的名字。

学生表和注册表如下:

CREATE TABLE STUDENT(
    Name       VARCHAR2(50),
    DOB        DATE,
    Address    VARCHAR(70),
CONSTRAINT STUDENT_PKEY PRIMARY KEY (Name)
);

CREATE TABLE ENROLLMENT(
    Name       VARCHAR2(50),
    Subject    VARCHAR2(70),
    Year       Number(4),
CONSTRAINT ENROLLMENT_PK PRIMARY KEY (Name, Subject)
CONSTRAINT ENROLLMENT_FKEY FOREIGN KEY (Name) REFERENCES TO STUDENT (Name)
);
马赫瓦兰·拉维桑卡尔

您采用的方法是正确的,只需从STUDENTStable开始,然后使用NOT EXISTS.

SELECT  st.Name
FROM STUDENT st
WHERE NOT EXISTS (
    SELECT st.Name
    FROM enrollment en
    WHERE en.Name = st.Name
    AND en.Subject = 'Science'
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅当另一个表中的所有外键都具有特定状态时才返回键值(ORACLE)

来自分类Dev

Oracle SQL:选择多个列可以包含多个值的记录

来自分类Dev

从SQL中的序列中获取最后一个值并将其插入到另一个表(Oracle)

来自分类Dev

从SQL中的序列中获取最后一个值并将其插入到另一个表(Oracle)

来自分类Dev

在Oracle中更改另一个字段的值时更改表字段的值

来自分类Dev

Oracle / SQL-查找具有一个不包含空值的值的记录

来自分类Dev

Oracle SQL选择唯一值AND匹配不唯一值的行中只有一个值

来自分类Dev

选择一个列,其中该行的最大值在Oracle的第三列之上分组

来自分类Dev

Oracle SQL对值进行求和,直到达到另一个值

来自分类Dev

Oracle PL / SQL SELECT INTO子句认为它需要另一个INTO

来自分类Dev

Oracle用另一个表中的主键值插入和替换值

来自分类Dev

从表2中选择一个值,该值取决于表1(Oracle SQL)中的另一个值

来自分类Dev

在另一个表中找到关联值时,Oracle在列中设置值

来自分类Dev

仅当另一个表中的所有外键都具有特定状态时才返回键值(ORACLE)

来自分类Dev

将列的派生总和值插入到另一个表中作为oracle数据库中的记录

来自分类Dev

Oracle SQL选择一个表列的最终值,就像其他表列中的值一样,该值包含负1位数字

来自分类Dev

根据另一个表中的列在表中插入记录(在Oracle SQL Developer中)

来自分类Dev

UPDATE列,其中不包含PL / SQL的oracle中每一行的最大值

来自分类Dev

从基于另一个表的表中选择记录数Oracle

来自分类Dev

Oracle SQL从联接到另一个表时获取最大日期值

来自分类Dev

从Oracle PL / SQL中的另一个包中获取记录类型的值

来自分类Dev

Oracle SQL选择唯一值AND匹配非唯一值的行中只有一个值

来自分类Dev

Oracle触发器不会在另一个表中插入值

来自分类Dev

一个表中的SQL更新值与Oracle SQL Developer中的另一个表的值匹配

来自分类Dev

在Oracle中针对另一个所有者访问函数?

来自分类Dev

Oracle SQL 查询以检索列中的值等于另一个表中的值计数的记录

来自分类Dev

根据另一个表的值更新 Oracle 中表中的值

来自分类Dev

用户在 Oracle PL/SQL 的 UI 搜索屏幕中输入或选择一个值或值的组合或所有值

来自分类Dev

sql Oracle:仅当值存在时才从另一个表插入一个值

Related 相关文章

  1. 1

    仅当另一个表中的所有外键都具有特定状态时才返回键值(ORACLE)

  2. 2

    Oracle SQL:选择多个列可以包含多个值的记录

  3. 3

    从SQL中的序列中获取最后一个值并将其插入到另一个表(Oracle)

  4. 4

    从SQL中的序列中获取最后一个值并将其插入到另一个表(Oracle)

  5. 5

    在Oracle中更改另一个字段的值时更改表字段的值

  6. 6

    Oracle / SQL-查找具有一个不包含空值的值的记录

  7. 7

    Oracle SQL选择唯一值AND匹配不唯一值的行中只有一个值

  8. 8

    选择一个列,其中该行的最大值在Oracle的第三列之上分组

  9. 9

    Oracle SQL对值进行求和,直到达到另一个值

  10. 10

    Oracle PL / SQL SELECT INTO子句认为它需要另一个INTO

  11. 11

    Oracle用另一个表中的主键值插入和替换值

  12. 12

    从表2中选择一个值,该值取决于表1(Oracle SQL)中的另一个值

  13. 13

    在另一个表中找到关联值时,Oracle在列中设置值

  14. 14

    仅当另一个表中的所有外键都具有特定状态时才返回键值(ORACLE)

  15. 15

    将列的派生总和值插入到另一个表中作为oracle数据库中的记录

  16. 16

    Oracle SQL选择一个表列的最终值,就像其他表列中的值一样,该值包含负1位数字

  17. 17

    根据另一个表中的列在表中插入记录(在Oracle SQL Developer中)

  18. 18

    UPDATE列,其中不包含PL / SQL的oracle中每一行的最大值

  19. 19

    从基于另一个表的表中选择记录数Oracle

  20. 20

    Oracle SQL从联接到另一个表时获取最大日期值

  21. 21

    从Oracle PL / SQL中的另一个包中获取记录类型的值

  22. 22

    Oracle SQL选择唯一值AND匹配非唯一值的行中只有一个值

  23. 23

    Oracle触发器不会在另一个表中插入值

  24. 24

    一个表中的SQL更新值与Oracle SQL Developer中的另一个表的值匹配

  25. 25

    在Oracle中针对另一个所有者访问函数?

  26. 26

    Oracle SQL 查询以检索列中的值等于另一个表中的值计数的记录

  27. 27

    根据另一个表的值更新 Oracle 中表中的值

  28. 28

    用户在 Oracle PL/SQL 的 UI 搜索屏幕中输入或选择一个值或值的组合或所有值

  29. 29

    sql Oracle:仅当值存在时才从另一个表插入一个值

热门标签

归档