【问题标题】:Using a nested select query in Oracle 11g在 Oracle 11g 中使用嵌套选择查询
【发布时间】:2016-07-31 17:48:13
【问题描述】:

我正在尝试使用嵌套选择并让它显示带有患者名字患者姓氏和他们的电子邮件的行。

我想用的是这个:

select pat_first, pat_last, pat_email
from (select pat_id
  from patients
minus
  select pat_allergies_id_fk
  from patient_allergies);

但是,患者表有 pat_id、pat_first、pat_last 和 pat_email。 Patient_allergies 表只有 patient_allergies_id_fk 和 patient_allergies 列。如果我将我想要的表放入第一个内部选择中,例如:

select pat_first, pat_last, pat_email
from (select pat_id, pat_first, pat_last, pat_email
  from patients
minus
  select pat_allergies_id_fk
  from patient_allergies);

但它给出了一个错误 - “ORA-01789:查询块的结果列数不正确”。我想这是因为我试图从一个有 5 列的表中减去一个包含两列的表,但我不确定如何让查询显示我想要的列(pat_first、pat_last 和 pat_email )。

例如,patients 表有 50 行,patient_allergies 表有 15 行,我试图获取不在 patient_allergies 中的 35 行,并输出 pat_first、pat_last 和 pat_email 行。

【问题讨论】:

    标签: sql select oracle11g


    【解决方案1】:

    试试这个:

    select pat_first, pat_last, pat_email
    from patients
    where pat_id not in (select pat_allergies_id_fk from patient_allergies);
    

    select pat_first, pat_last, pat_email
    from patients
    where not exists (select null from patient_allergies where pat_allergies_id_fk = pat_id);
    

    【讨论】:

    • 太棒了!那行得通,谢谢!我不知道 not in 函数(因为我是 SQL 新手)。
    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 2012-01-21
    • 2011-11-24
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多