我在尝试检查(销售ID NOT IN销售详细信息以检查是否有没有详细信息的销售)时遇到sql错误

时间:2020-03-02 07:14:35

标签: sql

select id as sales_id 
from sl_sales 
where  sales_id not in (select sales_id from sl_sales_dtls  )

为什么上面的sql是错误的。我需要检查是否有没有详细信息的销售。 谁能指导我

3 个答案:

答案 0 :(得分:1)

您不能在创建别名的范围内使用创建的别名。您需要:

select id as sales_id 
from sl_sales 
where id not in (select sales_id from sl_sales_dtls)

答案 1 :(得分:1)

这是不使用内联语句而编写此查询的另一种方法。

create table myTable(
    effectiveDate DATE NOT NULL,
    family CHAR(6) NOT NULL,
    instrument INT NOT NULL,
    sedol CHAR(8),
    name VARCHAR(100),
    icb INT,
    QZ DOUBLE,
    VZ DOUBLE,
    MZ DOUBLE,
    SZ DOUBLE,
    volZ DOUBLE,
    LZ DOUBLE,
    DYZ DOUBLE,
    QS DOUBLE,
    VS DOUBLE,
    MS DOUBLE,
    SS DOUBLE,
    volS DOUBLE,
    LS DOUBLE,
    DYS DOUBLE,
    priceO DOUBLE,
    fxO DOUBLE,
    capOUSD DOUBLE,
    PRIMARY KEY (effectiveDate, instrument));

答案 2 :(得分:1)

我会改用NOT EXISTS

select sl.id as sales_id 
from sl_sales sl
where not exists (select 1 from sl_sales_dtls dt where dt.sales_id = sl.id);
如果NOT IN的值为sub-query

null将不返回任何行。

相关问题